有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing Java多监视器问题

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

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

问候

尼基


共 (1) 个答案

  1. # 1 楼答案

    只读访问并不难。让我们调用frameA和frameB中的两个JFrame,以及新监视器frameC上的frame

    可以将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有几种方法可以帮助翻译坐标