1

jTree を表示するアプリケーションがあります。ツリーの各ノードにはflagged、ユーザーの注意が必要かどうかを示す と呼ばれるブール フィールドがあります。

フィールドが の場合、true赤で強調表示したいのですが、それ以外の場合は強調表示しません。

これを達成するための良い方法は何ですか? 延長する必要がありDefaultTreeCellRendererますか?独自のカスタムを実装しTreeCellRendererますか? 他の方法?

4

1 に答える 1

5

実行したいカスタム レンダリングは非常に基本的なものなので、そのメソッドを拡張DefaultTreeCellRendererしてオーバーライドするだけです。が使用getTreeCellRendererComponentする前景色を簡単に調整できます。簡単な例を次に示します。JLabelDefaultTreeCellRenderer

tree.setCellRenderer(new DefaultTreeCellRenderer() {
  @Override
  public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded,
                                                boolean leaf, int row, boolean hasFocus) {
    JLabel label = (JLabel)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
    YourNode node = (YourNode)value;
    if (node.isFlagged())
      label.setForeground(Color.RED);

    return label;
  }
});

そして結果: ここに画像の説明を入力

于 2013-06-14T15:18:03.317 に答える