【问题标题】:Java multiple monitor issueJava多显示器问题
【发布时间】:2011-06-21 10:44:01
【问题描述】:

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

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

问候

尼基

【问题讨论】:

    标签: java swing remote-access multiple-monitors


    【解决方案1】:

    只读访问并不难。让我们称您拥有 frameA 和 frameB 的 2 个 JFrame 以及新监视器 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。您需要计算图像的偏移量,然后将其转换回另一帧的内容窗格。

    注意:SwingUtilities 有几种方法可以帮助翻译坐标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2013-03-08
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多