Swing/OneTouchExpandable のバックアップの現在との差分(No.15)
- category: swing folder: OneTouchExpandable title: JSplitPaneのディバイダを展開、収納する tags: [JSplitPane, Divider, ActionMap, ServiceManager, BasicService] author: aterai pubdate: 2010-07-05T01:22:49+09:00 description: JSplitPaneのディバイダをマウスのクリックなどで一気に展開、収納できるように設定します。 image:
概要
JSplitPane
のディバイダをマウスのクリックなどで一気に展開、収納できるように設定します。
Screenshot
Advertisement
サンプルコード
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, s1, s2);
splitPane.setOneTouchExpandable(true);
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JSplitPane#setOneTouchExpandable(true)
と設定することで、ディバイダにJButton
が表示され、これらをクリックすることでJSplitPane
を展開、収納することができます。
上記のサンプルでは、JSplitPane#setOneTouchExpandable(true)
を設定するとディバイダにJButton
が2
つ表示され、これらをマウスでクリックするとJSplitPane
の展開、収納ができます。
Java 1.5
以降でJSplitPane#setDividerLocation(0);
などとしてディバイダを収納状態にした場合、JSplitPane
自体をリサイズすると収納されているコンポーネントの最小サイズ(setMinimumSize
)まで展開される- 収納状態を維持したい場合、リフレクションを使って、
BasicSplitPaneUI#setKeepHidden(true)
メソッドを実行したり、Divider
に表示されているJButton
を取得実行する方法がある - 収納状態を維持したい場合、リフレクションを使って
BasicSplitPaneUI#setKeepHidden(true)
メソッドを実行したりDivider
に表示されているJButton
を取得実行する方法がある - HOMEキーやENDキー(F8キーなどで
Divider
にフォーカスを移動した状態で)を押して展開、収納する方法では、Divider
中のJButton
を押して展開、収納した場合と動作が異なる - HOMEキーやENDキー(F8キーなどで
Divider
にフォーカスを移動した状態で)を押して展開、収納する方法ではDivider
中のJButton
を押して展開、収納した場合と動作が異なる- HOMEキー、ENDキーで展開、収納
- 前回の状態に一旦戻らずに展開、収納される
-
JSplitPane
自体をリサイズすると、収納されているコンポーネントの最小サイズ(setMinimumSize
)まで勝手に展開される -
JSplitPane#getActionMap()#get("selectMin")
などで取得できるAction
では、setKeepHidden(boolean)
が使われていない -
JSplitPane
自体をリサイズすると収納されているコンポーネントの最小サイズ(setMinimumSize
)まで自動的に展開される -
JSplitPane#getActionMap()#get("selectMin")
などで取得できるAction
ではsetKeepHidden(boolean)
が使われていない
- HOMEキー、ENDキーで展開、収納
-
GTKLookAndFeel
はワンタッチボタンをサポートしないのでSplitPane.supportsOneTouchButtons: Boolean.FALSE
が設定されている
参考リンク
- Bug ID: 5006095 Need a way to programmatically stick JSplitPane divider under j2sdk 1.5
- 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