|
|
作者: tvnet 出自: |
环境: Ubuntu 7.10 Java 6 netbeans-6.0.1-ml-linux
用netbeans新建一个"Java 桌面应用程序"(Java Desktop Application),全部默认,编译成功,但是无法运行,会显示如下错误提示(重点部分):
Couldn't set LookandFeel Application.lookAndFeel = "system" java.lang.NullPointerException ....
Exception in thread "AWT-EventQueue-0" java.lang.Error: Application class desktopapplication1.DesktopApplication1 failed to launch at org.jdesktop.application.Application$1.run(Application.java:177) ...
原因在于java窗口程序套用GTK布景主题(GTKLookAndFeel)。Netbeans 6 的 窗口化程序的默认情况下 Look and Feel 会直接套用操作系统的环境值。 这个问题也会同时存在其他使用Java GUI + GTK 的环境。最快修复这个问题的办法是更改该方案Properties -> Desktop App -> Look & Feel值从"System Default" -> "Java Default" 即可。但是这样的话,程序将不能套用系统的主题。
另一个较好的解决办法就是设置全局字体:
CODE:
/** * Main method launching the application. */ public static void main(String[] args) { setUIFont(new FontUIResource("Sans",0,12)); launch(TransportApp.class, args); }
/** * 设置全局字体 * 注:在使用系统缺省外观的情况下,Swing在GTK下会发生 * Couldn't set LookandFeel Application.lookAndFeel = "system" * java.lang.NullPointerException 异常,导致程序退出。 * 在UIManager.setLookAndFeel之前,设置全局字体,就可以解决该问题。 * @param f 字体 */ public static void setUIFont(javax.swing.plaf.FontUIResource f) { //setUIFont(new javax.swing.plaf.FontUIResource("Sans",java.awt.Font.PLAIN,9)); Enumeration keys = UIManager.getDefaults().keys(); while(keys.hasMoreElements()){ Object key = keys.nextElement(); Object value = UIManager.get(key); if(value instanceof FontUIResource){ UIManager.put(key, f); } } } |
| |
阅读(262) | 评论(0) | 转发(0) |