• category: swing folder: NimbusTreeLinesStyle title: NimbusLookAndFeelで、JTreeのノード接続線のスタイルを変更する tags: [JTree, NimbusLookAndFeel, LookAndFeel] author: aterai pubdate: 2017-06-26T14:46:25+09:00 description: NimbusLookAndFeelでのJTreeのノード間の接続線を表示し、そのスタイルを点線に変更します。 image: https://drive.google.com/uc?id=1u-SlKhxho10TFLrR_OwXc4RJ39aWzk4hkg

概要

NimbusLookAndFeelでのJTreeのノード間の接続線を表示し、そのスタイルを点線に変更します。

サンプルコード

// 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のノード接続線は水平、垂直ともに非表示
    • NimbusLookAndFeelでのデフォルトはJTreeのノード接続線は水平、垂直ともに非表示
  • 右: linesStyle: dashed
    • UIDefaultsを使用して、Tree.drawVerticalLinesTree.drawHorizontalLinesBoolean.TRUETree.linesStyledashedに設定
      • スタイルの値は、soliddashedのみ対応?(nonedottedを設定してもsolidと同じ線になる)
    • UIManager.put("Tree.drawVerticalLines", true);で変更に失敗し、UIManager.getLookAndFeelDefaults().put("Tree.drawVerticalLines", true);で成功する場合がある?
    • UIDefaultsを使用してTree.drawVerticalLinesTree.drawHorizontalLinestrueTree.linesStyledashedに設定
      • スタイルの値はsoliddashedのみ対応?(nonedottedを設定しても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);は問題ない場合もあって、原因不明
      • JTreeの生成のタイミングで変更に失敗したりUIManager.put("Tree.drawHorizontalLines", true);は問題ない場合もあって原因不明
      • UIManager.getBoolean("Tree.paintLines")が更新されていない?
  • メモ
    • BasicLookAndFeelMetalLookAndFeelWindowsLookAndFeelなどは、Tree.linesStyleの設定は効果がないが、Tree.lineTypeDashedが使用可能
    • BasicLookAndFeelMetalLookAndFeelWindowsLookAndFeelなどはTree.linesStyleの設定は効果がないがTree.lineTypeDashedが使用可能
      UIManager.put("Tree.paintLines", true);
      UIManager.put("Tree.lineTypeDashed", true);
      

参考リンク

コメント