Java идентифицирует более 2 мониторов - PullRequest
1 голос
/ 14 февраля 2011

Я занимаюсь разработкой Java-приложения, основанного на свинге, которое будет состоять из 3 основных JFrames, и каждый из них должен отображаться на одном из трех мониторов, присутствующих в системе.Более того, приложение будет иметь возможность оповещать о том, что определенный монитор отключен или повторно подключен.

Каждый основной JFrame должен отображаться на определенном экране дисплея.Это связано с тем, где эти мониторы будут расположены.Больше похоже на сценарий торговой точки, где один монитор может показывать вещи для продавца и другой для клиента и другого для охранника.

Теперь главная проблема состоит в том, как узнать, какой монитор какой.Я решил эту проблему, получив серийный номер каждого монитора, вызвав VBScript из Java.

Но еще одна проблема заключается в том, как последовательная карта-нет информации о мониторе в Java.В Java то, что я могу получить в соответствии с каждым монитором, является экземпляром java.awt.GraphicsDevice, и я понятия не имею, как я могу сопоставить серийный номер без этой информации, так как единственный способ иметь эти экземпляры java.awt.getLocalGraphicsEnvironment (). getScreenDevices (), и эта функция не гарантирует, что она будет возвращать устройства в определенной последовательности при каждом вызове функции.

Благодарность в ожидании

Ответы [ 2 ]

2 голосов
/ 14 февраля 2011

Java поддерживает несколько мониторов через объекты GraphicsEnvironment и GraphicsDevice. Проверьте GraphicsDevice javadoc для получения дополнительной информации.

1 голос
/ 14 февраля 2011

Предоставляет ли метод GraphicsDevice.getIDString() стабильное значение, которое можно сравнить с серийными номерами?Если это так, вы можете записать все идентифицированные серийные номера в файл свойств и выполнять сравнение при каждом запуске вашей программы (если идентификатор еще не является серийным номером).Этот файл свойств также может хранить положение каждого дисплея (слева, по центру, справа или сверху, по центру, снизу и т. Д.)

Если вы не можете определить соответствие между идентификатором и серийным номером, вы можете вызвать'display setup рутина' всякий раз, когда вы видите идентификатор дисплея, которого нет в вашем файле свойств.

Эта процедура предложит пользователю подтвердить номер модели дисплея и ввести положение каждого дисплея (учитывайте настройки ориентации дисплея в Win, OS X, Linux и т. Д.).Если вы можете нарисовать виджеты для определенного дисплея, вы сможете собрать эту информацию.Кроме того, если пользователь меняет физическое положение своих дисплеев (возможно, изменяя положение двух дисплеев), он может вручную выполнить эту процедуру.

...