Java 设置外观和感觉颜色

Java 设置外观和感觉颜色,java,swing,look-and-feel,nimbus,uimanager,Java,Swing,Look And Feel,Nimbus,Uimanager,我正在Java Swing应用程序中使用Nimbus外观。 L&F看起来很棒,但我需要更改一些设置字体、颜色。。。符合我公司的企业形象 以下代码设置整个应用程序的L&F: 该代码完成了设置Nimbus外观的任务。 问题是,customizeNimbusLaF不能像我期望的那样工作。 UIConstants中常量的数据类型是字体的颜色类型,具体取决于要设置的属性 问题是,只有少数外观选项会改变。树的背景等选项不会根据外观上的选项而更改。我意识到这一点,如果我改变一个组件的画师,只有一些事

我正在Java Swing应用程序中使用Nimbus外观。 L&F看起来很棒,但我需要更改一些设置字体、颜色。。。符合我公司的企业形象

以下代码设置整个应用程序的L&F:

该代码完成了设置Nimbus外观的任务。 问题是,customizeNimbusLaF不能像我期望的那样工作。

UIConstants中常量的数据类型是字体的颜色类型,具体取决于要设置的属性

问题是,只有少数外观选项会改变。树的背景等选项不会根据外观上的选项而更改。我意识到这一点,如果我改变一个组件的画师,只有一些事情会改变。但例如,杰帕内尔没有这样的画家财产,但也会制造问题

关于外观和感觉,我还有第二个问题: 例如菜单栏的绘制者不应该使用原色部分中设置的颜色吗,或者我是否需要实现我自己的绘制者来进行此使用


有人能告诉我我的问题出在哪里吗?

1.设置更改有点麻烦,必须设置L&F,然后才能对已安装的L&F进行任何更改

伪码

if( "Nimbus".equals( info.getName() ) ) {
   UIManager.setLookAndFeel(info.getClassName());
   UIManager.getLookAndFeelDefaults().put("Xxx", "Xxx")
   UIManager.getLookAndFeelDefaults().put("Xxx", "Xxx")
   break;
}
2.字体和部分颜色存储为所有秋千L&F的XXXUIRESOURCE,以及

3.最好由@camickr用于已安装方法的列表,而不是搜索

4.您可以在UIDefaults中设置自己的类型或值的Painter dependens,也可以覆盖XxxUIResources dependens类型,有时,somewer不起作用,因为Nimbus的开发在第二次开发中结束了。四分之一

编辑


5.我认为@aephyr参与了Nimbus development或e.I.?

1.设置更改有点粗糙,必须设置L&F,然后才有可能对设置的L&F进行任何更改

伪码

if( "Nimbus".equals( info.getName() ) ) {
   UIManager.setLookAndFeel(info.getClassName());
   UIManager.getLookAndFeelDefaults().put("Xxx", "Xxx")
   UIManager.getLookAndFeelDefaults().put("Xxx", "Xxx")
   break;
}
2.字体和部分颜色存储为所有秋千L&F的XXXUIRESOURCE,以及

3.最好由@camickr用于已安装方法的列表,而不是搜索

4.您可以在UIDefaults中设置自己的类型或值的Painter dependens,也可以覆盖XxxUIResources dependens类型,有时,somewer不起作用,因为Nimbus的开发在第二次开发中结束了。四分之一

编辑


5.我认为@aephyr参与了Nimbus开发或e.I.?

我发现了主要问题。 在将所有外观属性放入UIDefaults之后,我没有调用SwingUtilities.updateComponentTreeUI窗口

现在它按照我的预期执行

另一个问题:
有没有办法指定整个应用程序的首选字体?

我发现了主要问题。 在将所有外观属性放入UIDefaults之后,我没有调用SwingUtilities.updateComponentTreeUI窗口

现在它按照我的预期执行

另一个问题:
有没有一种方法可以指定整个应用程序的首选字体?

看看@aephyrs代码库,有两种方法,从xml文件和通过内部键迭代,因为字体是从JVM全局定义的,使用UIManager可以只为一个具体的JC组件更改字体。看看@aephyrs代码库,有两种方法,因为字体是从JVM全局定义的,并且通过使用UIManager可以只为一个具体的JComponent更改字体
if( "Nimbus".equals( info.getName() ) ) {
   UIManager.setLookAndFeel(info.getClassName());
   UIManager.getLookAndFeelDefaults().put("Xxx", "Xxx")
   UIManager.getLookAndFeelDefaults().put("Xxx", "Xxx")
   break;
}