2011-02-18 92 views
6

我使用的是Nimbus的外觀和感覺。根據這一link,你應該能夠實現3種不同的線條樣式與您的JTree:JTree線條樣式和Nimbus

enter image description here

在使用下面的代碼:

 

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

我的JTree看起來是這樣的:

enter image description here

它具有「無」風格而不是「水平」風格。任何想法,爲什麼這可能是?它與Nmbus有什麼關係?設置該屬性後,是否需要調用特別的東西?

感謝

+0

您使用Netbeans嗎? – 2011-02-18 15:18:12

+0

@Stack是的,我是。但是我的JTree是自定義的。它不使用GUI編輯器。 – user489041 2011-02-18 15:19:54

回答

5

我不相信靈光支持JTree.lineStyle財產。只有MetalLookAndFeel可以。

查看javax.swing.plaf.synth.SynthTreeUI(由Nimbus使用)和MetalTreeUI(由Metal使用)的源代碼。

更改爲MetalLookAndFeel並查看它是否有效。

4

原來你可以通過做

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

並不完美,但接近弄點這個效果。

0

對於仍然對此感興趣的人:

以下代碼段正在爲我工​​作。

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 
}