Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在基于Swing或NetBeans平台的JavaGUI应用程序中更改WM_类值?_Java_Swing_Netbeans_Xorg - Fatal编程技术网

如何在基于Swing或NetBeans平台的JavaGUI应用程序中更改WM_类值?

如何在基于Swing或NetBeans平台的JavaGUI应用程序中更改WM_类值?,java,swing,netbeans,xorg,Java,Swing,Netbeans,Xorg,所有基于Swing/NetBeans的Java GUI应用程序似乎都具有相同的WM\u类值: WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "java-lang-Thread" 可以通过发出xprop命令并指向窗口来查看此参数。定制它的实际目的是让类似Mac的Dock(例如AWN(也许还有Ubuntu的Unity))区分应用程序窗口,并将它们分组到应用程序的固定启动器图标下。要使其正常工作,必须在~/.local/share/applications

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

WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "java-lang-Thread"
可以通过发出
xprop
命令并指向窗口来查看此参数。定制它的实际目的是让类似Mac的Dock(例如AWN(也许还有Ubuntu的Unity))区分应用程序窗口,并将它们分组到应用程序的固定启动器图标下。要使其正常工作,必须在
~/.local/share/applications
/usr/share/applications
中的
.application
文件中相应地设置
StartupWMClass
参数。不用说,如果多个应用程序对
WM_CLASS

使用相同的字符串,那么AWN(和类似物)就会感到困惑。在
awtAppClassName
中找到了控制它的字段。它建议使用反射来修改它:

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

另请看。看起来他们不打算匆忙处理这件事…:-(我希望Gnome 3、Unity和Windows 7的现代窗口管理系统会让Oracle苏醒过来。遗憾的是,他们似乎选择了一种不同的、特定于Unity的方式来与Unity集成。顺便说一句,“Bug ID:6528430”这似乎是Java 6的问题。为什么不为Java 7和8提交相同的文件呢?我怀疑他们是否会将这样的功能添加到传统的Java版本中,像Java 8这样的开发前沿似乎更好。是的,有人知道如何在那里发表评论和投票吗?页面看起来很静态:我可以看到一些评论,但我找不到如何发表评论这是否有帮助:?对于不能更改代码的应用程序,您也可以用它检查WM代理,您只需编辑应用程序命令行。