所有基于 Swing/NetBeans 的 Java GUI 应用程序似乎都具有相同的 WM_CLASS
值:
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "java-lang-Thread"
可以通过发出xprop
命令并指向窗口来查看此参数。自定义它的实际目的是让类似 Mac 的停靠栏(例如 AWN(以及 Ubuntu 的 Unity))区分应用程序窗口并将它们分组在应用程序的固定启动器图标下。为此,需要在 ~/.local/share/applications
或 的
。不用说,如果多个应用程序对 .application
文件中相应地设置 StartupWMClass
参数/usr/共享/应用程序WM_CLASS
使用相同的字符串,AWN(和类似物)就会感到困惑。
最佳答案
This blog post在 Toolkit
中找到该字段控制它的,名为 awtAppClassName
。它建议使用反射来修改它:
Toolkit xToolkit = Toolkit.getDefaultToolkit();
java.lang.reflect.Field awtAppClassNameField = xToolkit.getClass().getDeclaredField("awtAppClassName");
awtAppClassNameField.setAccessible(true);
awtAppClassNameField.set(xToolkit, applicationName);
关于java - 如何在基于 Swing 或 NetBeans 平台的 Java GUI 应用程序中更改 WM_CLASS 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593075/