Swing/TreePaintLines のバックアップの現在との差分(No.6)
- category: swing folder: TreePaintLines title: JTreeの水平垂直線を表示しない tags: [JTree, UIManager] author: aterai pubdate: 2008-02-04T16:09:01+09:00 description: JTreeのアイコンを繋ぐ水平垂直線の表示の有無を切り替えます。 image:
概要
概要
JTree
のアイコンを繋ぐ水平垂直線の表示の有無を切り替えます。
Screenshot
Advertisement
サンプルコード
サンプルコード
final JTree tree = new JTree();
add(new JCheckBox(new AbstractAction("Tree.paintLines") {
@Override public void actionPerformed(ActionEvent e) {
if(((JCheckBox)e.getSource()).isSelected()) {
if (((JCheckBox) e.getSource()).isSelected()) {
UIManager.put("Tree.paintLines", Boolean.TRUE);
}else{
} else {
UIManager.put("Tree.paintLines", Boolean.FALSE);
}
tree.updateUI(); // 左のJTreeだけ更新
//SwingUtilities.updateComponentTreeUI(MainPanel.this);
SwingUtilities.updateComponentTreeUI(tree); // 左のJTreeだけ更新
}
}), BorderLayout.NORTH);
View in GitHub: Java, Kotlin解説
上記のサンプルでは、左のJTree
の水平線などの表示を、UIManager.put("Tree.paintLines", Boolean.FALSE);
で切り替えています(右は常に非表示)。
解説
上記のサンプルでは、左のJTree
の水平線などの表示を、UIManager.put("Tree.paintLines", Boolean.FALSE)
で切り替えています。
元々、線を表示しないGTKLookAndFeel
などでは、UIManager.put("Tree.paintLines", Boolean.TRUE);
としても線は描画されないようです。
- 右の
JTree
は常に水平垂直線を非表示に設定 - デフォルトで線を表示しない
GTKLookAndFeel
などではUIManager.put("Tree.paintLines", Boolean.TRUE)
としても接続線は描画されない - 複数の
JTree
の表示を個別に切り替えたい場合はHide horizontal and vertical lines in a JTree | Oracle Forumsで、Michael_Dunn さんが投稿(2007/10/24 2:42
)しているコードのようにBasicTreeUI#paintHorizontalLine(...)
メソッドなどをオーバーライドする方法がある
JTree
の表示を個別に切り替えたい場合は、Hide horizontal and vertical lines in a JTree | Oracle Forumsで、Michael_Dunn さんが投稿(2007/10/24 2:42
)したコードのように、BasicTreeUI#paintHorizontalLine
メソッドなどをオーバーライドする方法もあります。