gpt4 book ai didi

Java 多监视器问题

转载 作者:行者123 更新时间:2023-11-29 09:21:02 24 4
gpt4 key购买 nike

我正在开发一个应用程序,其中三个显示器配置了一个系统。两个监视器具有不同的显示内容,这是使用 java GraphicsEnvironmentGraphicsDevice 类实现的。现在连接到系统的第三个监视器应该显示前两个监视器(Display0 或 Display1)之一的内容,通过它可以查看操作。 (此监视器的工作方式应与远程访问软件的工作方式相同,例如 vnc 查看器)。

每个图形设备都有自己的 JFrame 来显示,我正在向这些设备显示我的 JComponents,但我不知道如何处理这第三台显示器。 Java 是否提供任何 API 或机制,以便我可以将一个监视器上的操作显示到另一个监视器上?任何想法/见解将不胜感激。

问候

妮琪

最佳答案

只读访问不是很难。让我们将您拥有的 2 个 JFrames 称为 frameA 和 frameB 以及新监视器 frameC 上的框架。

您可以将 A 或 B 的内容渲染到 C 中,如下所示:

JFrame frameC = new JFrame();
Container cont = c.getContentPane();
cont.setLayout(new BorderLayout());
JLabel lab = new JLabel();
cont.add(new JScrollPane(lab), BorderLayout.CENTER);
jFrameC.setSize(800,600);

然后,定期运行这段代码:

JFrame f = frameA; // or frameB
BufferedImage bi = new BufferedImage(f.getWidth(), f.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g = bi.createGraphics();
f.paint(g);
g.dispose();
lab.setIcon(new IconImage(bi));

如果您真的想从 frameC 控制 frameA/B,那就更难了。我可能会从 java.awt.Robot 开始. Java2S 有一些 examples demonstrating the use of Robot .

控制“远程”框架最难的部分是将 frameC 中的鼠标事件转换为 frameA/B。您需要计算图像的偏移量,然后将其转换回另一帧的内容 Pane 。

备注:SwingUtilities有几种方法可以帮助转换坐标。

关于Java 多监视器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6423996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com