Swing/FixedDividerSplitPane のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/FixedDividerSplitPane へ行く。
- category: swing folder: FixedDividerSplitPane title: JSplitPaneのDividerをマウスで移動できないように設定する tags: [JSplitPane, Divider] author: aterai pubdate: 2017-09-04T15:18:48+09:00 description: JSplitPaneのDividerをマウスやキー入力などで移動不可になるように設定します。 image: https://drive.google.com/uc?id=1eHpxPFoB6tM1nQoTdo1jYb29F6W2IyIwyw
概要
JSplitPane
のDivider
をマウスやキー入力などで移動不可になるように設定します。
Screenshot
Advertisement
サンプルコード
JSplitPane sp = new JSplitPane(...);
sp.setOneTouchExpandable(true);
JCheckBox check1 = new JCheckBox("setEnabled(...)", true);
check1.addActionListener(e -> sp.setEnabled(check1.isSelected()));
int dividerSize = UIManager.getInt("SplitPane.dividerSize");
JCheckBox check2 = new JCheckBox("setDividerSize(0)");
check2.addActionListener(e -> sp.setDividerSize(check2.isSelected() ? 0 : dividerSize));
View in GitHub: Java, Kotlin解説
setEnabled(...)
JSplitPane#setEnabled(false)
を実行して無効化し、マウスやキー入力によるDivider
の移動を不可に設定JSplitPane
を無効化しても、内部のコンポーネントには影響しないJSplitPane
を無効化しても、OneTouch
ボタンは無効化されないJFrame
のリサイズなどでJSplitPane
自体のサイズが変化したとき、ResizeWeight
の値によってDivider
が移動する場合があるが、JSplitPane
を無効化してもこれには影響しない
JSplitPane#setDividerSize(0)
を実行してDivider
を非表示にし、マウスでの移動を不可に設定- カーソルキー入力による移動などは有効
JSplitPane#setFocusable(false)
でキー入力は無効になる
LookAndFeel
に依存し、例えばMotifLookAndFeel
ではJSplitPane#setDividerSize(0)
を実行しても無効でDivider
の幅は変化しない
- カーソルキー入力による移動などは有効
- メモ
Component divider = ((BasicSplitPaneUI) sp.getUI() ).getDivider();
でDivider
を取得し、setEnabled(false)
を実行しても効果が無い