如何在其他屏幕上移动JFrame?

时间:2019-01-17 20:56:07

标签: java jframe

我创建了一个程序,该程序将打开4个包含applet的Jframe。 我想将这些框架从主屏幕移到第二个屏幕,但是它不起作用。

我已经尝试过.setLocation(x,y)方法,但是jframe仍然不会在屏幕边缘移动。

我什至尝试与graphicsdevice.getdefaultconfiguration.getBounds()进行绑定,但结果为“ 0”,因此每次都会在主屏幕上的0,0上打开JFrame。

希望,任何人都可以理解我的问题并可以帮助我:D

P.S .:对不起,我的英语不好:S

1 个答案:

答案 0 :(得分:1)

根据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