Swing/FixedDividerSplitPane のバックアップ(No.7)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - 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
を無効化してもこれには影響しない
setDividerSize(0)
JSplitPane#setDividerSize(0)
を実行してDivider
を非表示にすることでマウスドラッグによる移動を不可に設定- カーソルキー入力による移動などは有効
JSplitPane#setFocusable(false)
でキー入力は無効になる
LookAndFeel
に依存し、例えばMotifLookAndFeel
ではJSplitPane#setDividerSize(0)
を実行しても無効でDivider
の幅は変化しないComponent divider = ((BasicSplitPaneUI) sp.getUI() ).getDivider()
でDivider
を取得し、setEnabled(false)
を実行しても効果が無い
参考リンク
- JSplitPane (Java Platform SE 8)
- java - JSplitPane set resizable false - Stack Overflow
- [JDK-4797982] Setting negative size of JSplitPane divider leads to unexpected results. - Java Bug System