如何在基于Swing或NetBeans平台的Java GUI应用程序中更改WM_CLASS值?

时间:2012-05-15 01:26:59

标签: java swing netbeans xorg

所有基于Swing / NetBeans的Java GUI应用程序似乎都具有相同的WM_CLASS值:

WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "java-lang-Thread"

可以通过发出xprop命令并指向该窗口来查看此参数。定制它的实际目的是让类似Mac的扩展坞(例如AWN(以及可能是Ubuntu的Unity))区分应用程序窗口并将它们分组到应用程序的固定启动器图标下。要实现此目的,StartupWMClass参数将在.application~/.local/share/applications中的/usr/share/applications文件中进行相应设置。毋庸置疑,如果多个应用程序对WM_CLASS使用相同的字符串,AWN(和类似物)会感到困惑。

1 个答案:

答案 0 :(得分:2)

This blog postToolkit中找到了控制它的字段,名为awtAppClassName。它建议使用反射来修改它:

Toolkit xToolkit = Toolkit.getDefaultToolkit();
java.lang.reflect.Field awtAppClassNameField = xToolkit.getClass().getDeclaredField("awtAppClassName");
awtAppClassNameField.setAccessible(true);
awtAppClassNameField.set(xToolkit, applicationName);