2012-04-03 43 views
2

我在搜索是否有可能更改Nimbus外觀和感覺中所有組件的全局大小。Nimbus外觀和感覺JAVA - 更改組件的全局大小

有一個tutorial用於重新調整組件大小;但不適用於所有組件。

我找到了這樣的事情: http://www.jasperpotts.com/blog/2007/12/nimbus-large-small-mini-components/

2008年11月6日上午11時29分對不起馬特沒有用於 大小的全局設置,這是重複的事情,我們可以考慮增加爲看來 明智。

但這篇文章是從幾年前,也許有所改變。有任何想法嗎?

謝謝。

回答

1

我不認爲有一個靈巧的具體方式來實現這一點。 JXLayer項目具有實現將整個UI轉換爲不同的比例 - 這可以應用於任何外觀和感覺。 你可能想看看this demo

+0

好,感謝您的諮詢,但如果沒有簡單的方法來實現,在靈氣(不使用第三方庫像JXLayer) - 我必須尋找其他拉夫。任何(免費用於商業用途)推薦? – 2012-04-04 06:51:10

1

它可以這樣做:

UIManager.setLookAndFeel(new NimbusLookAndFeel()); 

    final SynthStyleFactory styleFactory = SynthLookAndFeel.getStyleFactory(); 
    SynthLookAndFeel.setStyleFactory(new SynthStyleFactory() { 
    @Override 
    public SynthStyle getStyle(JComponent c, Region id) { 
     c.putClientProperty("JComponent.sizeVariant", "large"); 
     return styleFactory.getStyle(c, id); 
    } 
    }); 
0

下面的答案是以前的答案被@Stijn與變化在初始化的方法是的延伸,在推薦文件。引用鏈接nimbuslafswing tutorials - size

版本注:不要設置Nimbus的外觀和通過調用UIManager.setLookAndFeel方法明確地感覺到,因爲不是所有版本 或Java SE 6的支持雨雲的實現。此外,Nimbus軟件包的 位置在JDK 6 Update 10和 JDK 7版本之間進行了更改。遍歷所有已安裝的外觀和感覺 實現是一種更穩健的方法,因爲如果Nimbus不是 可用,則使用默認外觀和感覺。

try { 
    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { 
    if ("Nimbus".equals(info.getName())) { 
     UIManager.setLookAndFeel(info.getClassName()); 
     try { 
      Constructor c = Class.forName("MyStyleFactory").getConstructor(String.class); 
      c.newInstance("small"); // regular, mini, small or large 
     } catch (ExceptionInInitializerError eiie){ 
     // 
     } catch (LinkageError le){ 
     // 
     } catch (ClassNotFoundException cnfe){ 
     // 
     } 
     break; 
    } 
    } 
} catch (Exception e) { 
    // If Nimbus is not available, you can set the GUI to another look and feel. 
} 

文件:MyStyleFactory.java

public class MyStyleFactory extends SynthStyleFactory { 
    protected static String variant = "regular"; 

    final SynthStyleFactory styleFactory = SynthLookAndFeel.getStyleFactory(); 

    static { 
     SynthLookAndFeel.setStyleFactory(new MyStyleFactory(variant)); 
    } 

    public MyStyleFactory(String variant) { 
     if (variant.equals("regular") || variant.equals("mini") 
       || variant.equals("small") || variant.equals("large")) 
      MyStyleFactory.variant = variant; 
    } 

    @Override 
    public SynthStyle getStyle(JComponent c, Region id) { 
     c.putClientProperty("JComponent.sizeVariant", variant); 
     return styleFactory.getStyle(c, id); 
    } 
}