В Windows каждый экран имеет номер или идентификатор, которые я предполагаю относительно того, как я физически подключил свои кабели монитора. Ключ к моему вопросу заключается в том, что я могу перенастроить эти экраны, но они сохранят свою личность.Отобразить физическое расположение экрана в массиве GraphicsDevice с Swing
Запрос Java на GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
даст мне массив GraphicsDevice
.
Как я могу соотнести порядок экранов в массиве с нумерацией окон? Меня бы заинтересовало кросс-платформенное решение.
Например, моя конфигурация для Windows выглядит следующим образом
но возвращаемый массив выглядит как этот
screens[0] = relates to screen 2
screens[1] = relates to screen 3
screens[2] = relates to screen 1
NB код я получаю, я хотел бы использовать это вдоль линий этого
frame.setLocation(
screens[i].getDefaultConfiguration().getBounds().x, frame.getY());
, где i
должен быть физическим номером, а не позицией в массиве (или его отображением, если вы понимаете, что я имею в виду).
благодарит за идею и за время, чтобы ее кодировать! :) – Toby
Следует отметить, что если вы измените порядок массива, возвращающийся из GraphicsEnvironment.getLocalGraphicsEnvironment(). GetScreenDevices(), ваш основной экран также изменится (GraphicsEnvironment.getLocalGraphicsEnvironment(). GetDefaultScreenDevice()). Поэтому лучше сделать копию возвращаемого массива, чтобы не потерять основное устройство. – bmlkc
Ничего себе. Это серьезная ошибка, и для меня это довольно неожиданно, поскольку Java обычно очень хорош в использовании [защитного копирования] (http://stackoverflow.com/questions/12000655/regarding-an-immutable-class-defensive-copying). Сравните с пресловутой ошибкой безопасности [Class.getSigners()] (https://www.cs.auckland.ac.nz/courses/compsci725s2c/archive/termpapers/725lun.pdf). – VGR