NimbusLookAndFeelで、JTreeのノード接続線のスタイルを変更する
Total: 3069, Today: 2, Yesterday: 2
Posted by aterai at 
Last-modified: 
Summary
NimbusLookAndFeelでのJTreeのノード間の接続線を表示し、そのスタイルを点線に変更します。
Screenshot

Advertisement
Source Code Examples
// 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, KotlinDescription
- 左: 
DefaultNimbusLookAndFeelでのデフォルトはJTreeのノード接続線は水平、垂直ともに非表示
 - 右: 
linesStyle: dashedUIDefaultsを使用して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);
 
Reference
- JTreeの水平垂直線を表示しない
 - JTreeのノード間の接続線のスタイルを変更する
 - swing - Nimbus JTree presentation error under java version 1.8 - Stack Overflow