NimbusLookAndFeelで、JTreeのノード接続線のスタイルを変更する
Total: 2572
, Today: 2
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
NimbusLookAndFeel
でのJTree
のノード間の接続線を表示し、そのスタイルを点線に変更します。
Screenshot
Advertisement
サンプルコード
// UIManager.put("Tree.drawVerticalLines", true);
UIManager.getLookAndFeelDefaults().put("Tree.drawVerticalLines", true);
UIManager.put("Tree.drawHorizontalLines", true);
UIManager.put("Tree.linesStyle", "dashed");
// or
JTree tree = new JTree();
UIDefaults d = new UIDefaults();
d.put("Tree.drawVerticalLines", Boolean.TRUE);
d.put("Tree.drawHorizontalLines", Boolean.TRUE);
d.put("Tree.linesStyle", "dashed");
tree.putClientProperty("Nimbus.Overrides", d);
View in GitHub: Java, Kotlin解説
- 左:
Default
NimbusLookAndFeel
でのデフォルトはJTree
のノード接続線は水平、垂直ともに非表示
- 右:
linesStyle: dashed
UIDefaults
を使用してTree.drawVerticalLines
とTree.drawHorizontalLines
をtrue
、Tree.linesStyle
をdashed
に設定- スタイルの値は
solid
とdashed
のみ対応?(none
やdotted
を設定してもsolid
と同じ線種になる)
- スタイルの値は
UIManager.put("Tree.drawVerticalLines", true)
で変更に失敗し、UIManager.getLookAndFeelDefaults().put("Tree.drawVerticalLines", true)
で成功する場合がある?- swing - Nimbus JTree presentation error under java version 1.8 - Stack Overflow
JTree
の生成のタイミングで変更に失敗したりUIManager.put("Tree.drawHorizontalLines", true);
は問題ない場合もあって原因不明UIManager.getBoolean("Tree.paintLines")
が更新されていない?
BasicLookAndFeel
、MetalLookAndFeel
、WindowsLookAndFeel
などはTree.linesStyle
の設定は効果がないがTree.lineTypeDashed
が使用可能UIManager.put("Tree.paintLines", true); UIManager.put("Tree.lineTypeDashed", true);
参考リンク
- JTreeの水平垂直線を表示しない
- JTreeのノード間の接続線のスタイルを変更する
- swing - Nimbus JTree presentation error under java version 1.8 - Stack Overflow