sou*_*jee 5 java swing drag-and-drop renderer jtree
我有两个JTree面板中的两个JFrame.我想改变节点的样式(颜色和字体)从一棵树拖放到另一棵树.请给我一个JTree永久改变节点颜色的方法.

Con*_*Del 11
首先,您需要一个可以处理样式和颜色的数据对象.您可以继承DefaultMutableTreeNode并使用getts和setter添加这些数据项
然后,您需要创建自定义TreeCellRenderer.我建议扩展DefaultTreeCellRenderer,并在重写的处理程序中检查您的自定义类,并修改JLabel输出以使用Font和Color(如果设置了这些值)
创建自己的CellRenderer.要为您提供适当的行为MyTreeCellRenderer,您必须扩展DefaultTreecellRenderer并覆盖该getTreeCellRendererComponent方法.
public class MyTreeCellRenderer extends DefaultTreeCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean exp, boolean leaf, int row, boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, sel, exp, leaf, row, hasFocus);
// Assuming you have a tree of Strings
String node = (String) ((DefaultMutableTreeNode) value).getUserObject();
// If the node is a leaf and ends with "xxx"
if (leaf && node.endsWith("xxx")) {
// Paint the node in blue
setForeground(new Color(13, 57 ,115));
}
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
最后,说你的树被调用myTree,设置你的树CellRenderer:
myTree.setCellRenderer(new MyTreeCellRenderer());
Run Code Online (Sandbox Code Playgroud)