• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTreeの水平垂直線を表示しない
#navi(../)
#tags(JTree, UIManager)
RIGHT:Posted by &author(aterai); at 2008-02-04
*JTreeの水平垂直線を表示しない [#la642829]
JTreeのアイコンを繋ぐ水平垂直線の表示の有無を切り替えます。
``JTree``のアイコンを繋ぐ水平垂直線の表示の有無を切り替えます。

-&jnlp;
-&jar;
-&zip;

//#screenshot
#ref(http://lh3.ggpht.com/_9Z4BYR88imo/TQTWNxTrfYI/AAAAAAAAAo4/xS9RjkcNYYM/s800/TreePaintLines.png)

**サンプルコード [#a4057d44]
#code(link){{
final JTree tree = new JTree();
add(new JCheckBox(new AbstractAction("Tree.paintLines") {
  public void actionPerformed(ActionEvent e) {
  @Override public void actionPerformed(ActionEvent e) {
    if(((JCheckBox)e.getSource()).isSelected()) {
      UIManager.put("Tree.paintLines", Boolean.TRUE);
    }else{
      UIManager.put("Tree.paintLines", Boolean.FALSE);
    }
    tree.updateUI(); // 左のJTreeだけ更新
    //SwingUtilities.updateComponentTreeUI(MainPanel.this);
  }
}), BorderLayout.NORTH);
}}

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

元々、線を表示しない GTK L&F では、UIManager.put("Tree.paintLines", Boolean.TRUE);としても線は描画されないようです。
元々、線を表示しない``GTKLookAndFeel``などでは、``UIManager.put("Tree.paintLines", Boolean.TRUE);``としても線は描画されないようです。

複数のJTreeの表示を個別に切り替えたい場合は、[http://forums.sun.com/thread.jspa?threadID=5229120 Swing - Hide horizontal and vertical lines in a JTree]で、Michael_Dunn さんが投稿(2007/10/24 2:42)したコードのように、BasicTreeUI#paintHorizontalLine メソッドなどをオーバーライドする方法もあります。
複数の``JTree``の表示を個別に切り替えたい場合は、[http://forums.sun.com/thread.jspa?threadID=5229120 Swing - Hide horizontal and vertical lines in a JTree]で、Michael_Dunn さんが投稿(``2007/10/24 2:42``)したコードのように、``BasicTreeUI#paintHorizontalLine``メソッドなどをオーバーライドする方法もあります。

**参考リンク [#ld863a92]
-[http://forums.sun.com/thread.jspa?threadID=5229120 Swing - Hide horizontal and vertical lines in a JTree]

**コメント [#v77a9c8a]
#comment