How to change style (color, font) of a single JTree node

后端 未结 2 364
谎友^
谎友^ 2020-12-21 01:43

I have two JTree in two panels in a JFrame. I want to change the style(color and font) of nodes on drag and drop from one tree to the other.Please

相关标签:
2条回答
  • 2020-12-21 02:17

    Create your own CellRenderer. To give the appropriate behaviour to your MyTreeCellRenderer, you will have to extend DefaultTreecellRenderer and override the getTreeCellRendererComponent method.

    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;
        }
    }
    

    Finally, say your tree is called myTree, set your CellRenderer to it:

    myTree.setCellRenderer(new MyTreeCellRenderer());
    
    0 讨论(0)
  • 2020-12-21 02:36

    To start, you will need to have a data object that can handle style and color. You could subclass DefaultMutableTreeNode and add these data items with getts and setters

    Then you'd need to create a custom TreeCellRenderer. I recommend extending DefaultTreeCellRenderer, and in the overridden handler, checking for your custom class, and modifying the JLabel output to use the Font and Color if these values are set

    0 讨论(0)
提交回复
热议问题