を作成しましたJTree
。特定のノードのアイコンを変更する必要があります。閉じsetIcon
たノードと開いたノード、およびリーフノードを使用できますが、で指定したノードのアイコンを設定する必要がありますJTree
。これに光を当ててください。
質問する
1047 次
1 に答える
3
デフォルトのアイコンを変更する方法を知っている場合は、これがTreeCellRendererで発生することを知っています。DefaultTreeCellRendererよりも高度なアイコンの決定機能を備えた独自のTreeCellRendererを実装するだけです。
このようなもの :
public class MyTreeCellRenderer implements TreeCellRenderer {
private final DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer();
private final Icon specialIcon;
public MyTreeCellRenderer(Icon specialIcon) {
this.specialIcon = specialIcon;
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
defaultRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
if (needsSpecialIcon(tree, value, selected, expanded, leaf, row, hasFocus)) {
defaultRenderer.setIcon(specialIcon);
}
return defaultRenderer;
}
private boolean needsSpecialIcon(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
// check condition for special icon here
return false;
}
}
これは基本的にデフォルトの動作をDefaultTreeCellRendererに委任しますが、特別な条件がtrueの場合はアイコンをオーバーライドします。
于 2012-12-09T17:35:21.067 に答える