我有以下情况:
对于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;
}
我被困在绘画材料的孩子们身上。 我知道顺序(上,下,L,R,前,下),但我需要一种方法来识别节点。 我想要让他们的父母以某种方式通过他们在childer列表中的号码来识别他们。需要帮助。
答案 0 :(得分:1)
您有问题制定将图像/图标映射到节点的决定。
我建议您使用策略模式,以便您可以更改如何找出相关节点应使用的图标。
然后你可以尝试不同的方法来解决这个问题,而且例行程序也不会遇到所有ifs等问题。