【问题标题】:Nimbus Look And Feel JAVA - change global size of componentsNimbus Look And Feel JAVA - 更改组件的全局大小
【发布时间】:2017-03-25 20:22:56
【问题描述】:

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

有一个tutorial 用于重新调整组件的大小;但并非适用于所有组件。

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

2008 年 11 月 6 日上午 11:29 抱歉,Matt 没有全局设置 尺寸,这又是我们可以考虑添加的东西 明智的。

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

谢谢。

【问题讨论】:

    标签: java swing size global nimbus


    【解决方案1】:

    我认为没有特定的 nimbus 方法可以实现这一点。 JXLayer 项目已实现将整个 UI 转换为不同的比例 - 这可以应用于任何外观。 您可能想查看this demo

    【讨论】:

    • 好的,感谢您的建议,但如果没有简单的方法在 nimbus 中实现这一点(不使用 JXLayer 等第三方库) - 我必须寻找其他 laf。有什么(免费用于商业用途)推荐吗?
    【解决方案2】:

    可以这样做:

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

    【讨论】:

      【解决方案3】:

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

      版本说明:不要通过调用 UIManager.setLookAndFeel 方法显式设置 Nimbus 外观,因为并非所有版本 或 Java SE 6 的实现支持 Nimbus。此外, Nimbus 包的位置在 JDK 6 Update 10 和 JDK 7 版本。迭代所有已安装的外观和感觉 implementations 是一种更健壮的方法,因为如果 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);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-02
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        相关资源
        最近更新 更多