JSplitPaneのディバイダを展開、収納する
Total: 7009
, Today: 1
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
JSplitPane
のディバイダをマウスのクリックなどで一気に展開、収納できるように設定します。
Screenshot
Advertisement
サンプルコード
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, s1, s2);
splitPane.setOneTouchExpandable(true);
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JSplitPane#setOneTouchExpandable(true)
を設定するとディバイダにJButton
が2
つ表示され、これらをマウスでクリックするとJSplitPane
の展開、収納ができます。
Java 1.5
以降でJSplitPane#setDividerLocation(0);
などとしてディバイダを収納状態にした場合、JSplitPane
自体をリサイズすると収納されているコンポーネントの最小サイズ(setMinimumSize
)まで展開される- 収納状態を維持したい場合、リフレクションを使って
BasicSplitPaneUI#setKeepHidden(true)
メソッドを実行したりDivider
に表示されているJButton
を取得実行する方法がある - HOMEキーやENDキー(F8キーなどで
Divider
にフォーカスを移動した状態で)を押して展開、収納する方法ではDivider
中のJButton
を押して展開、収納した場合と動作が異なる- HOMEキー、ENDキーで展開、収納
- 前回の状態に一旦戻らずに展開、収納される
JSplitPane
自体をリサイズすると収納されているコンポーネントの最小サイズ(setMinimumSize
)まで自動的に展開されるJSplitPane#getActionMap()#get("selectMin")
などで取得できるAction
ではsetKeepHidden(boolean)
が使われていない
- HOMEキー、ENDキーで展開、収納
GTKLookAndFeel
はワンタッチボタンをサポートしないのでSplitPane.supportsOneTouchButtons: Boolean.FALSE
が設定されている
参考リンク
- JSplitPane#setOneTouchExpandable(boolean) (Java Platform SE 8)
- Bug ID: 5006095 Need a way to programmatically stick JSplitPane divider under j2sdk 1.5
- JSplitPaneの収納状態を維持する
- java - JSplitPane setOneTouchExpandable(true) is not shown - Stack Overflow