• title: JTreeの水平垂直線を表示しない tags: [JTree, UIManager] author: aterai pubdate: 2008-02-04T16:09:01+09:00 description: JTreeのアイコンを繋ぐ水平垂直線の表示の有無を切り替えます。

概要

JTreeのアイコンを繋ぐ水平垂直線の表示の有無を切り替えます。

サンプルコード

final JTree tree = new JTree();
add(new JCheckBox(new AbstractAction("Tree.paintLines") {
  @Override public void actionPerformed(ActionEvent e) {
    if (((JCheckBox) e.getSource()).isSelected()) {
      UIManager.put("Tree.paintLines", Boolean.TRUE);
    } else {
      UIManager.put("Tree.paintLines", Boolean.FALSE);
    }
    SwingUtilities.updateComponentTreeUI(tree); // 左のJTreeだけ更新
  }
}), BorderLayout.NORTH);
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、左のJTreeの水平線などの表示を、UIManager.put("Tree.paintLines", Boolean.FALSE);で切り替えています(右は常に非表示)。

元々、線を表示しない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メソッドなどをオーバーライドする方法もあります。

参考リンク

コメント