此代码示例为我提供了当前显示的可用屏幕:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
但我想要做的是在不同的显示器上有一个JFrame。 (在同一台物理计算机上运行的不同xorg服务器)。
实施例
export DISPLAY=:0.0
java myapp
这将在任何可用屏幕上显示0.0的弹出窗口。
export DISPLAY=:1.0
java myapp
这将在任何可用屏幕上显示1.0的弹出窗口
现在,如果我想在同一个应用程序中显示1.0和显示0.0中的一个,那么屏幕是什么呢。
基本上,我希望我的应用程序主要使用export DISPLAY =:1.0运行,但我希望状态JFrame显示在:0.0。我怎样才能在Java中实现这一目标?任何的想法?或者,如果这不可能,我想让AWT机器人在DISPLAY中运行:1.0并且在DISPLAY中显示AWT =:0.0
请勿将此与来自同一GraphicsEnvironment的2个不同屏幕上的显示2 JFrame混淆。这很简单,已经回复了。这里我讲的是2个不同显示器上的2个JFrame,每个显示器都有1到x个屏幕。因此,当前问题中没有任何内容与“java,在双监视器配置中的特定屏幕中显示JFrame”有关。请仔细阅读。
实施例: 显示0.0有2个屏幕。设备1和设备2。 Display 1.0是VNC服务器显示器,有1个屏幕。设备1。
我想在Display 0.0设备2上显示JFrame,在显示器上显示1.0设备1.
使用getLocalGraphicsEnvironment()可以轻松获取单个显示器的所有设备。但是如何才能获得其他可用的显示屏和相关屏幕?使用bash命令行我可以使用导出DISPLAY转到我想要的那个,然后使用wmctrl获取详细信息。我怎样才能用Java做类似的事情?
更新: 我在文件系统中找到了X服务器:
cd /tmp/.X11-unix && for x in X*; do echo ":${x#X}"; done
但是仍然不喜欢如何对一个或另一个显示的特定Java窗口说... 感谢。