Nimbus外观和感觉JAVA - 改变组件的全局大小

时间:2012-04-03 14:32:18

标签: java swing size global nimbus

我正在寻找是否有可能改变Nimbus外观中所有组件的全局大小。

tutorial用于重新调整组件大小;但不适用于所有组件。

我发现了这样的事情: http://www.jasperpotts.com/blog/2007/12/nimbus-large-small-mini-components/

  

2008年11月6日上午11:29对不起Matt没有全球设置   尺寸,这也是我们可以考虑添加的东西   明智的。

但这篇文章来自几年前,也许有些事情发生了变化。有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:1)

我认为没有一种特定的灵活方式来实现这一目标。 JXLayer项目实现了将整个UI转换为不同的比例 - 这可以应用于任何外观。 您可以查看this demo

答案 1 :(得分: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);
    }
  });

答案 2 :(得分:0)

以下答案是@Stijn对前一个答案的扩展,其中的更改是在doc中建议的初始化方法中。引用链接nimbuslafswing tutorials - size

  

版本说明 :不要通过调用UIManager.setLookAndFeel方法明确设置Nimbus外观,因为并非所有版本   或Java SE 6的实现支持Nimbus。另外,   Nimbus软件包的位置在JDK 6 Update 10和   JDK 7发布。迭代所有已安装的外观   实现是一种更强大的方法,因为如果不是Nimbus   可用,使用默认外观。

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);
    }
}

文件:MyStyleFactory.java

Drive.DriveApi.newDriveContents(getGoogleApiClient()).setResultCallback(driveContentsCallback);