我正致力于通过动态更改UIDefaults来定制Swing应用程序。最终目标是更改其中的许多内容(颜色、字体、大小、边框等),并以每个用户为基础保存结果。虽然它可能会给应用程序一些非标准的外观,但客户端会提出要求,客户端会收到。
我遇到的唯一问题是GUI只更新一次。第一次更改ui属性时,一切都很好,随后的更改不会影响任何内容。
// called from the EDT
// uiKeyName points to some ColorUIResource
UIManager.getDefaults().put(uiKeyName, <<color from color picker>>);
SwingUtilties.updateComponentTreeUI(rootWindow);它只起作用一次,但再也不起作用了。想法?
发布于 2008-10-30 17:06:11
例如,当您将新颜色放入表中时,它是color对象还是ColorUIResource?据我所知,只有当current的值为null或UIResource的实例时,才会采用新值。因此,如果您插入一个普通的旧Color对象,您所做的任何后续更改都将被忽略。
此外,正如链接的文档页面所建议的那样,这可能只对字体和前景/背景颜色有帮助;当涉及到更改边框和边距等内容时,您可能就不走运了。这不是Swing的可插拔LookAndFeels设计的目的。也许您可以让客户端对基于Synth的LAF感兴趣?
https://stackoverflow.com/questions/250313
复制相似问题