JSplitPaneのディバイダを展開、収納する
Total: 7464, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
JSplitPaneのディバイダをマウスのクリックなどで一気に展開、収納できるように設定します。
Screenshot

Advertisement
Source Code Examples
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, s1, s2);
splitPane.setOneTouchExpandable(true);
View in GitHub: Java, KotlinDescription
上記のサンプルでは、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が設定されている
Reference
- 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