Написал ренедерер для JTree, чтобы отображать иконки в зависимости от условий
private class MyObjRenderer extends DefaultTreeCellRenderer {
@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);
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
NodeInfo nodeInfo = (NodeInfo)node.getUserObject();
ImageIcon icon = null;
if (nodeInfo.fld_id == 0) {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-1.png"));
}
switch (nodeInfo.type) {
case 0: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-2.png"));
break;
}
case 1001: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-4.png"));
break;
}
case 1002: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-5.png"));
break;
}
case 1003: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/900-4.png"));
break;
}
case 1004: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-3.png"));
break;
}
case 1005: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-6.png"));
break;
}
case 1006: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-7.png"));
break;
}
case 1007: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-8.png"));
break;
}
case 1008: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-9.png"));
break;
}
case 1009: {
icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-10.png"));
break;
}
}
if (icon!=null) setIcon(icon);
setToolTipText(value.toString());
return this;
}
}
Все работает ОК. Однако, когда я редактирую ветку или лист, то в режиме редактирования, показывается стандартная иконка.
Как можно сделать, чтобы при редактировании также отображалась та иконка, которая мне необходима
Здравствуйте, aliks-os, Вы писали:
AO> switch (nodeInfo.type) {
AO> case 0: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-2.png"));
AO> break;
AO> }
AO> case 1001: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-4.png"));
AO> break;
AO> }
AO> case 1002: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-5.png"));
AO> break;
AO> }
AO> case 1003: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/900-4.png"));
AO> break;
AO> }
AO> case 1004: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-3.png"));
AO> break;
AO> }
AO> case 1005: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-6.png"));
AO> break;
AO> }
AO> case 1006: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-7.png"));
AO> break;
AO> }
AO> case 1007: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-8.png"));
AO> break;
AO> }
AO> case 1008: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-9.png"));
AO> break;
AO> }
AO> case 1009: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-10.png"));
AO> break;
AO> }
AO> }
Красота.
AO>Все работает ОК. Однако, когда я редактирую ветку или лист, то в режиме редактирования, показывается стандартная иконка.
AO>Как можно сделать, чтобы при редактировании также отображалась та иконка, которая мне необходима
TreeCellEditor
Хм, спасибо за подсказку. Хотя в принципе я обходился встроенным...
Попробую сейчас его написать
Здравствуйте, aliks-os, Вы писали:
AO>AO> switch (nodeInfo.type) {
AO> case 0: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-2.png"));
AO> break;
AO> }
AO> case 1001: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-4.png"));
AO> break;
AO> }
AO> case 1002: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-5.png"));
AO> break;
AO> }
AO> case 1003: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/900-4.png"));
AO> break;
AO> }
AO> case 1004: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-3.png"));
AO> break;
AO> }
AO> case 1005: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-6.png"));
AO> break;
AO> }
AO> case 1006: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-7.png"));
AO> break;
AO> }
AO> case 1007: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-8.png"));
AO> break;
AO> }
AO> case 1008: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-9.png"));
AO> break;
AO> }
AO> case 1009: {
AO> icon = new javax.swing.ImageIcon(getClass().getResource("/db/resources/883-10.png"));
AO> break;
AO> }
AO> }
AO>
Могу только сказать что создавать иконки в рендерере — это мракобесие. Ну и switch довольно спорный. Если ты вдруг не понял сарказма Blazkowicz.