Java Toolkit Получение второго размера экрана

У меня есть два экрана, подключенных к компьютеру, и мне было интересно, есть ли способ в JFrame или Toolkit для обнаружения того, на каком экране находится окно?

У меня есть этот код:

java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 

Который получает мой размер экрана моего главного экрана, но как я могу получить размер моего второго экрана или определить, на каком экране находится окно?

Вы должны взглянуть на GraphicsEnvironment .

В частности, getScreenDevices() :

Возвращает массив всех объектов GraphicsDevice экрана.

Вы можете получить размеры из этих объектов getDisplayMode (косвенно, через getDisplayMode ). (Эта страница также показывает, как разместить кадр на определенном устройстве.)

И вы можете перейти с JFrame на свое устройство с помощью getGraphicsConfigration() , который возвращает GraphicsConfiguration с getDevice() . (Метод getIDstring() , вероятно, позволит вам различать экраны.)

Посмотрите эту тему на StackOverflow . Код из OP использует этот код:

 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for(GraphicsDevice curGs : gs) { GraphicsConfiguration[] gc = curGs.getConfigurations(); for(GraphicsConfiguration curGc : gc) { Rectangle bounds = curGc.getBounds(); System.out.println(bounds.getX() + "," + bounds.getY() + " " + bounds.getWidth() + "x" + bounds.getHeight()); } } 

Выход был:

 0.0,0.0 1024.0x768.0 0.0,0.0 1024.0x768.0 0.0,0.0 1024.0x768.0 0.0,0.0 1024.0x768.0 0.0,0.0 1024.0x768.0 0.0,0.0 1024.0x768.0 1024.0,0.0 1024.0x768.0 1024.0,0.0 1024.0x768.0 1024.0,0.0 1024.0x768.0 1024.0,0.0 1024.0x768.0 1024.0,0.0 1024.0x768.0 1024.0,0.0 1024.0x768.0 

Итак, вы можете увидеть, что он возвращает два экрана. У него было два экрана 1024×768, расположенных рядом друг с другом. Код можно оптимизировать, поскольку вы хотите только ширину и высоту:

 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for(GraphicsDevice curGs : gs) { DisplayMode dm = curGs.getDisplayMode(); System.out.println(dm.getWidth() + " x " + dm.getHeight()); } 

Если вы используете код, показанный здесь, вы можете перебирать все GraphicsDevice s в системе и получать их размеры. Учитывая, что вы можете создать JFrame на определенной GraphicsDevice, вы также можете получить определенную графическую схему, в которую входит JFrame, получив окно JFrame, вызывая http://download.oracle.com/javase/6/docs/api/java/awt /Window.html#getGraphicsConfiguration () в окне, а затем getGraphicsDevice .

Прямо к коду, попробуйте это 🙂

  GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int i = 0; i < gs.length; i++) { System.out.println(gs[i].getDisplayMode().getWidth()+" "+gs[i].getDisplayMode().getHeight()); //System.out.println(java.awt.Toolkit.getDefaultToolkit().getScreenSize()); // to check default resolution of the device } 
  • Создание пользовательского LockScreen в android
  • Изменение яркости экрана программно (как с помощью виджета питания)
  • Изменение системной яркости программно
  • Акселерометр Android не работает, когда экран выключен
  • Давайте будем гением компьютера.