次のような状況があります。
ech ツリー ノードには、別の種類のイメージ アイコンがあります。
これらのアイコンを実際に設定する方法は、 をオーバーライドgetTreeCellRendererComponent
し、ユーザー オブジェクト (タイトル) を確認してから、アイコンを描画することです。
それ以外の場合は、安定した名前がないため、アイコンをオブジェクト アイコン (o3 用) に設定します。
private final String OBJECTS, OBJECT, MATERIAL, DIMENSIONS, L, W, H,
LEFT, RIGHT, FRONT, BACK, TOP, BOTTOM; //=...
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
node = (DefaultMutableTreeNode) value;
String str = node.getUserObject().toString().toLowerCase();
if (str.contains("objects")) {
setIcon(new ImageIcon(OBJECTS));
}
else if (str.contains("components")) {
setIcon(new ImageIcon(OBJECTS));
}
else if (str.contains("dimensions")) {
setIcon(new ImageIcon(DIMENSIONS));
}
else if (str.contains("materials")) {
setIcon(new ImageIcon(MATERIAL));
}
else if (str.contains("length")) {
setIcon(new ImageIcon(L));
}
else if (str.contains("width")) {
setIcon(new ImageIcon(W));
}
else if (str.contains("height")) {
setIcon(new ImageIcon(H));
}
else if (node.getParent().toString().toLowerCase().contains("components") ||
node.getParent().toString().toLowerCase().contains("objects")) {
setIcon(new ImageIcon(OBJECT));
}
return this;
}
マテリアルの子のペイントに行き詰まっています。順序 (上、下、左、右、前、下) はわかっていますが、ノードを識別する方法が必要です。私は彼らの親を取得し、どういうわけか子供のリストの番号でそれらを識別しようと考えていました. ここで助けが必要です。