How to update node tree size using custom model?

I am using a custom model in JTree. When the label of some node changes, I pass it to the TreeModelEventlisteners as follows:

       protected void fireNodeChanged(TreePath path) {
            TreeModelEvent evt = new TreeModelEvent(this, path);
            for(TreeModelListener listener : listeners) {
                listener.treeNodesChanged(evt);
            }
        }

where pathis the path to change the node, including itself.

This changes the name, but its size is not equal:

enter image description here

A swing truncates the title and adds an ellipsis (indicated by a red arrow).

How to fix it? Please note that I have a custom model and cannot call nodeChanged, I have to imitate her.

+4
source share
2 answers

, . JTree, updateUI() , :

tree.setCellRenderer(new DefaultTreeRenderer() {
    public Component getTreeCellRendererComponent(JTree tree, Object value,
            boolean selected, boolean expanded, boolean leaf, int row,
            boolean hasFocus) {
        Component c = super.getTreeCellRendererComponent(tree, value,
                selected, expanded, leaf, row, hasFocus);
        // You can do more changes here
        ((JComponent) c).updateUI();
        return c;
    }});

, "" , , . TreeModel, , , JTree .

, "", , .

, , EventListenerList .

0

addTreeModelListener(TreeModelListener l) TreeModel? treeNodesChanged(TreeModelEvent e) , . DefaultTreeModel ( node). DefaultTreeModel .

0

All Articles