2011-02-18 13 views
6

Uso la apariencia y el tacto de Nimbus. De acuerdo con este link, usted debe ser capaz de lograr 3 estilos de línea diferentes con su JTree:JTree Line Style y Nimbus

enter image description here

Mientras se utiliza el siguiente código:

 

theTree.putClientProperty("JTree.lineStyle", "Horizontal"); 
 

Mi JTree es así:

enter image description here

Tiene el estilo "Ninguno" y no el estilo "Horizontal". ¿Alguna idea de por qué esto podría ser? ¿Tiene algo que ver con Nmbus? ¿Debo llamar a algo especial después de configurar esa propiedad?

Gracias

+0

¿Estás usando Netbeans? –

+0

@Stack Sí, lo soy. Sin embargo, mi JTree es personalizado. No usa el editor GUI. – user489041

+0

No estoy seguro entonces. Mira esto [publicación] (http://stackoverflow.com/questions/1347607/netbeans-jtree-linestyle). La recomendación es anular setUI y updateUI. –

Respuesta

5

no creo Nimbus admite la propiedad JTree.lineStyle. Solo el MetalLookAndFeel lo hace.

Eche un vistazo al código fuente javax.swing.plaf.synth.SynthTreeUI (que es utilizado por Nimbus) y MetalTreeUI (que es utilizado por Metal).

Cambie a MetalLookAndFeel y vea si funciona.

+0

Interesante. Lo cambié a Metal LaF y funcionó. Es un poco decepcionante que Nimbus no los soporte – user489041

+0

He intentado hacer esto con Nimbus antes y no pude encontrar la forma en que Nimbus lo haya admitido. Estoy de acuerdo con la respuesta de dogbane. – jzd

+0

¿Ha intentado lograr esto usando un procesador personalizado? –

4

Resulta que se puede conseguir un poco de este efecto haciendo

NimbusLookAndFeel laf = new NimbusLookAndFeel(); 
UIManager.setLookAndFeel(laf); 
nimbUID = laf.getDefaults(); 
nimbUID.put("Tree.drawHorizontalLines", true); 
nimbUID.put("Tree.drawVerticalLines", true); 

No es perfecto, pero cerca.

0

Para cualquier persona todavía está interesado en esto:

el siguiente fragmento está trabajando para mí.

NewNimbusLookAndFeel laf = new NewNimbusLookAndFeel(); 

UIDefaults defs = laf.getDefaults(); 
defs.put("Tree.drawHorizontalLines", true); 
defs.put("Tree.drawVerticalLines", true); 
defs.put("Tree.linesStyle", "dashed"); 

try { 
    UIManager.setLookAndFeel(laf); 
} catch (UnsupportedLookAndFeelException e) { 
    //Error handling code 
}