Как переместить JFrames на другие экраны? - PullRequest
0 голосов
/ 17 января 2019

Я создал программу, которая открывает 4 Jframes, содержащие апплеты. Я хотел бы переместить эти кадры с моего главного экрана на второй, но он не работает.

Я пытался использовать .setLocation(x,y) -метод, но jframes по-прежнему не будут перемещаться по краю экрана.

Я даже пытался получить границу с graphicsdevice.getdefaultconfiguration.getBounds(), но результат равен "0", поэтому он открывает JFrames на 0,0 на моем главном экране каждый раз.

Надеюсь, кто-нибудь понимает мою проблему и может мне помочь: D

P.S .: Извините за мой плохой английский: S

1 Ответ

0 голосов
/ 18 января 2019

В зависимости от настроек вашего 2-х мониторов, слева или справа от центрального экрана, вы можете просто использовать отрицательное значение для x, чтобы переместить его на левый монитор, или значение, превышающее ширину центрального монитора, чтобы переместить его в правый монитор.

Осторожно: если у вас другая высота мониторов, убедитесь, что значение y тоже находится в пределах его.

Например, если у вас есть монитор слева от центрального экрана:

JFrame f = new JFrame();
f.getContentPane().add(new JLabel("Hello world"));
f.pack();
f.setVisible(true);
f.setLocation(0, 200);

JFrame f2 = new JFrame();
f2.getContentPane().add(new JLabel("Hello world 2"));
f2.pack();
f2.setVisible(true);
f2.setLocation(-400, 500);

Мониторы вертикально сложены влево как упражнение для разработчика. :)

Конечно, если вы не хотите жестко кодировать эти значения, есть способ найти различные размеры экрана и смещения по x и y (если, например, не тот же размер):

    GraphicsDevice[] gds = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
    for (GraphicsDevice gd : gds) {
        for(GraphicsConfiguration gc : gd.getConfigurations()) {
            Rectangle bounds = gc.getBounds();
            System.out.println("x,y: "+bounds.getX() + "," + bounds.getY() + " width,height: " + bounds.getWidth() + "x" + bounds.getHeight());
        }
    }

Для меня сейчас, с двумя экранами, с одним большим экраном 27 "в центре и одним 24" слева:

x,y: 0.0,0.0 width,height: 2560.0x1440.0
x,y: -1920.0,232.0 width,height: 1920.0x1200.0

Пояснение: Левая сторона левого экрана - x=-1920

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...