Ciao a tutti.
Ho un JTree a cui volevo dare un look personalizzato.
Ho esteso la classe DefaultTreeCellRenderer per far ciò. La gestione dell'icona mi riesce, la gestione del colore anche.
Quello che non mi riesce e ti impostare il bordo del nodo selezionato a quello di default.
Non ho trovato nessun metodo come per i colori, o mi sfugge?
Devo impostarlo io il bordo senza poterlo ricavare dal componente di default?
Cosa mi sfugge?codice:class MyTreeRenderer extends DefaultTreeCellRenderer { Icon casaIcon; Icon ufficioIcon; public MyTreeRenderer(Icon casaIcon, Icon ufficioIcon) { this.casaIcon = casaIcon; this.ufficioIcon = ufficioIcon; this.setFont(new Font("Arial", Font.PLAIN, 12)); } @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); if (leaf && isCasa(value)) { setIcon(this.casaIcon); } else if (leaf && isUfficio(value)) { setIcon(this.ufficioIcon); } JLabel l = new JLabel(); l.setIcon(getIcon()); l.setText(getText()); if (sel) { l.setBackground(this.getBackgroundSelectionColor()); l.setForeground(this.getTextSelectionColor()); } else { l.setForeground(this.getTextNonSelectionColor()); } l.setOpaque(sel); return l; } }

al volante son nervoso
Rispondi quotando