jTree を表示するアプリケーションがあります。ツリーの各ノードにはflagged
、ユーザーの注意が必要かどうかを示す と呼ばれるブール フィールドがあります。
フィールドが の場合、true
赤で強調表示したいのですが、それ以外の場合は強調表示しません。
これを達成するための良い方法は何ですか? 延長する必要がありDefaultTreeCellRenderer
ますか?独自のカスタムを実装しTreeCellRenderer
ますか? 他の方法?
jTree を表示するアプリケーションがあります。ツリーの各ノードにはflagged
、ユーザーの注意が必要かどうかを示す と呼ばれるブール フィールドがあります。
フィールドが の場合、true
赤で強調表示したいのですが、それ以外の場合は強調表示しません。
これを達成するための良い方法は何ですか? 延長する必要がありDefaultTreeCellRenderer
ますか?独自のカスタムを実装しTreeCellRenderer
ますか? 他の方法?
実行したいカスタム レンダリングは非常に基本的なものなので、そのメソッドを拡張DefaultTreeCellRenderer
してオーバーライドするだけです。が使用getTreeCellRendererComponent
する前景色を簡単に調整できます。簡単な例を次に示します。JLabel
DefaultTreeCellRenderer
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;
}
});
そして結果: