红联Linux门户
Linux帮助

linux下java swing问题的解决

发布时间:2008-07-29 01:22:45来源:红联作者:kaiqi
在linux做java开发的朋友都知道swing在linux下有些很令人头疼的问题。

第一个问题就是scim输入法和swing的冲突问题导致键盘失效,尤其是开了compiz之后。

对于这个问题网上有很多处理的方法,例如添加环境变量AWT_TOOLKIT=MToolkit,这个方法还是不能解决swing程序中键盘失效的问题。

国外论坛上找到一个很好的解决方法就是:

sudo cp ~/.scim/config /root/.scim/

之后我在netbeans里面从来没有发生过键盘失效的问题

第二个麻烦就是在Ubuntu使用Java来编写Swing应用程序时一个比较大的问题就是不能使用SystemLookAndFeel。

例如运行jconsole的时候会报如下错:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.sun.java.swing.plaf.gtk.GTKLookAndFeel.initSystemColorDefaults(GTKLookAndFeel.java:1267)
at com.sun.java.swing.plaf.gtk.GTKLookAndFeel.loadStyles(GTKLookAndFeel.java:1509)
……

有的人给出不完美的解决方案,就是把语言环境改成英文:

export LANG=en

这样swing应用程序就可以正常运行了,但这样对于使用中文的用户来说就很不方便,界面变成了英文。实际上出现这个问题是因为swing的默认laf采用systemlaf,而ubuntu里却没有定义这个laf

好的解决方法是在程序启动时传递JVM运行参数 -Dswing.systemlaf=javax.swing.plaf.metal.MetalLookAndFeel

或者在/etc/environment 文件在最后增加上:

_JAVA_OPTIONS="-Dswing.systemlaf=javax.swing.plaf.metal.MetalLookAndFeel"
文章评论

共有 2 条评论

  1. belltoy 于 2008-12-29 14:54:33发表:

    转载请注明作者和出处!

    上面这段内容是来自我的blog:
    http://belltoy.cn/blog/fix-java-swing-on-linux.html

  2. pig345 于 2008-12-10 16:12:36发表:

    谢谢,很实用的东西。
    sun jvm在windows下没问题,看来sun里面的人可能也是用windows的居多。