# 1 楼答案 在现代窗口管理器上发现/设置桌面是通过读取/设置EWMH规范(http://packages.debian.org/search?keywords=proftpd-basic&searchon=names&suite=all§ion=all)中的_NET_WM_DESKTOP属性来完成的 我不知道有哪种简洁封装的API公开了这种功能,但谷歌发现了http://code.google.com/p/ewm/source/browse/trinity/fusion-X11/trunk/src/main/java/org/fusion/x11/ewmh/NetFrameExtents.java,这可能是一个开始
# 2 楼答案 我是由“NetFrmeExtents.java”链接的项目的作者 以下是我的答案: 除非swing/awt现在已经实现了,否则在纯java中很难做到这一点。最直接的(也是唯一的?)方法是使用JNI并通过xlib/xcb实现。但是你可以按照你的要求去做 有一个名为EWMH的桌面约定可以帮助您实现所需。 您需要执行的基本步骤顺序是: 获取应用程序的窗口id。为此,谷歌搜索如何在awt中检索窗口句柄/窗口id李> 接下来你需要阅读由原子定义的几个“属性”。如果你不知道这是什么谷歌如何从xlib/xcb窗口读取属性李> EWMH中有一个属性,列出了窗口管理器定义的所有虚拟桌面。 见http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#id2449367 在应用程序的窗口中设置属性a属性,请参见http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#id2507080以设置应用程序所在虚拟桌面的编号李> 如果你做的一切都是正确的,并且窗口管理器支持ewmh(大多数都支持),那么它应该可以工作
# 1 楼答案
在现代窗口管理器上发现/设置桌面是通过读取/设置EWMH规范(http://packages.debian.org/search?keywords=proftpd-basic&searchon=names&suite=all§ion=all)中的
_NET_WM_DESKTOP
属性来完成的我不知道有哪种简洁封装的API公开了这种功能,但谷歌发现了http://code.google.com/p/ewm/source/browse/trinity/fusion-X11/trunk/src/main/java/org/fusion/x11/ewmh/NetFrameExtents.java,这可能是一个开始
# 2 楼答案
我是由“NetFrmeExtents.java”链接的项目的作者
以下是我的答案:
除非swing/awt现在已经实现了,否则在纯java中很难做到这一点。最直接的(也是唯一的?)方法是使用JNI并通过xlib/xcb实现。但是你可以按照你的要求去做
有一个名为EWMH的桌面约定可以帮助您实现所需。 您需要执行的基本步骤顺序是:
如果你做的一切都是正确的,并且窗口管理器支持ewmh(大多数都支持),那么它应该可以工作