Проблема с несколькими мониторами в Java
Я разрабатываю приложение с тремя мониторами, настроенными на одну систему. Два монитора имеют различное содержимое дисплея, что достигается с помощью Java GraphicsEnvironment
а также GraphicsDevice
классы. Теперь предполагается, что третий монитор, подключенный к системе, отображает содержимое одного из первых двух мониторов (либо Display0, либо Display1), через которые можно просматривать операции. (Этот монитор должен работать так же, как и программное обеспечение для удаленного доступа, например, vnc viewer).
Каждое графическое устройство имеет собственный JFrame для отображения, я показываю свои JComponents для этих устройств, но я не знаю, как с этим третьим монитором обращаться. Предоставляет ли Java какой-либо API или механизм, позволяющий отображать операции на одном мониторе в другом? Любая идея / понимание будет высоко ценится.
С уважением
Nikki
1 ответ
Доступ только для чтения не очень сложен. Давайте назовем 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));
Если вы действительно хотите управлять кадрами A/B из frameC, это будет немного сложнее. Я бы наверное начал с java.awt.Robot. Java2S имеет несколько примеров, демонстрирующих использование робота.
Самая сложная часть управления "удаленным" фреймом - это трансляция событий мыши в frameC в frameA/B. Вам нужно будет рассчитать смещение на изображении, а затем перевести его обратно на панель содержимого другого фрейма.
Примечание: SwingUtilities имеет несколько методов, помогающих с переводом координат.