2

我正在搜索是否可以更改 Nimbus Look and Feel 中所有组件的全局大小。

有一个重新调整组件大小的教程;但不适用于所有组件。

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

2008 年 11 月 6 日上午 11:29 抱歉,Matt 没有全局设置大小,这又是我们可以考虑添加的东西,因为它看起来很明智。

但这篇文章是几年前的,也许有些东西已经改变了。有任何想法吗?

谢谢。

4

3 回答 3

1

我认为没有一种灵气特定的方法可以实现这一目标。 JXLayer项目具有将整个 UI 转换为不同比例的实现——这可以应用于任何外观。你可能想看看这个演示

于 2012-04-03T14:41:08.207 回答
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);
    }
  });
于 2015-11-26T15:27:42.140 回答
1

下面的答案是@Stijn 先前答案的扩展,变化在于文档中建议的初始化方法。引用链接nimbuslafswing 教程 - 大小

版本说明:不要通过调用 UIManager.setLookAndFeel 方法显式设置 Nimbus 外观,因为并非 Java SE 6 的所有版本或实现都支持 Nimbus。此外,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);
    }
}
于 2017-03-25T12:22:56.080 回答