Проблема с несколькими мониторами в Java - PullRequest
2 голосов
/ 21 июня 2011

Я занимаюсь разработкой приложения с тремя мониторами, настроенными на одну систему. Два монитора имеют различное содержимое дисплея, что достигается с помощью классов java GraphicsEnvironment и GraphicsDevice. Теперь предполагается, что третий монитор, подключенный к системе, отображает содержимое одного из первых двух мониторов (либо Display0, либо Display1), через которые можно просматривать операцию. (Этот монитор должен работать так же, как и программное обеспечение для удаленного доступа, например, vnc viewer).

Каждое графическое устройство имеет собственный JFrame для отображения, я показываю свои JComponents на эти устройства, но я не знаю, как с этим третьим монитором обращаться. Предоставляет ли Java какой-либо API или механизм, позволяющий отображать операции на одном мониторе в другом? Любая идея / понимание будут высоко оценены.

Привет

Nikki

1 Ответ

0 голосов
/ 09 июля 2011

Доступ только для чтения не очень сложен. Давайте назовем 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 имеет несколько примеров , демонстрирующих использование Robot .

Самая сложная часть управления «удаленным» фреймом - это трансляция событий мыши в frameC в frameA / B. Вам нужно будет рассчитать смещение на изображении, а затем перевести его обратно на панель содержимого другого фрейма.

Примечание: SwingUtilities имеет несколько способов помочь с переводом координат.

...