// {{{ getTreeCellRendererComponent() method public final Component getTreeCellRendererComponent( JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { if (!propertyChangeListeners.containsKey(tree)) { PropertyChangeListener propertyChangeListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if (!(evt.getSource() instanceof JTree)) return; JTree tree = (JTree) evt.getSource(); if (tree.getCellRenderer() == EnhancedTreeCellRenderer.this) tree.setCellRenderer(newInstance()); tree.removePropertyChangeListener("UI", propertyChangeListeners.remove(tree)); } }; tree.addPropertyChangeListener("UI", propertyChangeListener); propertyChangeListeners.put(tree, propertyChangeListener); } super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); configureTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); return this; } // }}}