我正在尝试将第三方LAF应用于NetBeans RCP应用程序(而不是IDE)。因为这是第三方LAF,我必须包含对额外JAR的依赖。作为一个模块化平台,我编写了一个NetBeans模块,它包装了LAF JAR并在restored()方法中调用了UIManager.setLookAndFeel()。问题是模块没有按任何特定顺序加载,所以它不能一直工作。
理想情况下,我会强制立即加载此模块,但我找不到如何干净利落地完成。
我曾尝试使用“--laf”和“--cp:p”参数设置LAF,如下所述:
http://javahowto.blogspot.com/2008/05/how-to-customize-netbeans-look-and-feel.html
问题是第三方LAF JAR依赖于NetBeans和其他第三方JAR,所以在运行时我得到了很多“未找到类”的错误。从技术上讲,这些类存在但是在单独的模块中。我宁愿不要用大量的“--cp:p”参数来填充命令行。
作为旁注,通过让IDE和RCP具有相同的名称,它使得谷歌搜索解决方案变得更加困难。
答案 0 :(得分:0)
进一步的调试显示,在我的LAF模块启动后,RCP会多次调用UIManager.setLookAndFeel()。后续调用将LAF重置为默认值。
“--laf”命令行参数不影响默认的LAF。但是设置“swing.defaultlaf”系统属性确实。
解决方案是将模块的restored()方法中的系统属性设置为第三方LAF类名。