Самый простой способ сделать это - создать модель JTree
, используя DefaultMutableTreeNode
s, и установить значение "пользовательский объект" для определенных узлов, а затем использовать это значение, чтобы определить поведение средства визуализации. когда он встречает этот узел.
Сначала мы строим простую модель и передаем ее конструктору JTree
:
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Hello");
DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("Goodbye");
DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("Bonjour");
root.add(child1);
root.add(child2);
JTree tree = new JTree(root);
Теперь определите настраиваемое средство визуализации ячеек дерева:
TreeCellRenderer renderer = new DefaultTreeCellRenderer() {
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
// Defer to superclass to create initial version of JLabel and then modify (below).
JLabel ret = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
// We know that value is a DefaultMutableTreeNode so this downcast is safe.
MutableTreeNode node = (MutableTreeNode) value;
// Inspect user object and change rendering based on this.
if ("Hello".equals(node.getUserObject())) {
ret.setIcon(...);
}
// Could also inspect whether node is a leaf node, etc.
return ret;
}
};