How do I display an edited JTree node in bold face?
Created May 4, 2012
You will need a combination of TreeCellEditor and TreeCellRenderer implementations.
When the user clicks on a TreeNode (or performs any other gesture that has been configured to start editing) the TreeCellEditor kicks in. The user edits the value. When the user commits the value the TreeCellEditor's -
public boolean stopCellEditing() Tell the editor to stop editing and accept any partially edited value as the value of the editor. The editor returns false if editing was not stopped, useful for editors which validates and can not accept invalid entries.
is called. You could note down the TreeNode that was modified as part of the TreeNode implementation state or in the userObject inside the TreeNode.
You could subclass DefaultMutableTreeNode or implement TreeNode, have a property "modified".
If the user does not commit the changes then the modified flag should not be set.
For showing the bold font you could do the following -
Install a subclass of DefaultTreeCellRenderer. In the overridden method getTreeCellRendererComponent(..) do -
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { JLabel label = super.getTreeCellRenderer(...); if (((Cast here) value).isModified()) { label.setFont(/* bold font */); } return label; }