Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将swing颜色扩展到自定义组件_Java_Swing_Colors_Custom Component_Uimanager - Fatal编程技术网

Java 将swing颜色扩展到自定义组件

Java 将swing颜色扩展到自定义组件,java,swing,colors,custom-component,uimanager,Java,Swing,Colors,Custom Component,Uimanager,在实现swing应用程序时,您通常会发现一类组件应该具有一致的外观 示例:Mypanel,它扩展了JPanel,表示一个应用对象,因此具有黄色背景和深黄色边框线 是否可以利用swing颜色管理? 我的想法是将我的颜色放入UIManager.getLookAndFeelDefaultsmap,然后以某种方式将它们绑定到组件 这个“不知何故”是一个问题:如何以最简单的形式做到这一点?如果您只想定制一些组件,类似的方法应该可以实现: // Specify the colors UIDefaults u

在实现swing应用程序时,您通常会发现一类组件应该具有一致的外观
示例:
Mypanel
,它扩展了
JPanel
,表示一个应用对象,因此具有黄色背景和深黄色边框线
是否可以利用swing颜色管理?
我的想法是将我的颜色放入
UIManager.getLookAndFeelDefaults
map,然后以某种方式将它们绑定到组件

这个“不知何故”是一个问题:如何以最简单的形式做到这一点?

如果您只想定制一些组件,类似的方法应该可以实现:

// Specify the colors
UIDefaults uiDef = new UIDefaults();
uiDef.put("Panel.background", Color.BLUE);

// Use the colors on a specific component
JPanel panel = new JPanel();
panel.putClientProperty("Nimbus.Overrides", uiDef);
SwingUtilities.updateComponentTreeUI(panel);

有关键名、默认颜色和画师,请参见。

完全按照预期工作:-)现在我正在尝试使用画师。对于border,似乎无法使用UIDefaults条目来完成。注意:各种LAF在UIDefaults属性的名称上并不一致。因此,如果用户使用不同的LAF运行,“Nimbus.Overrides”将无效。