我创建了一个程序,该程序将打开4个包含applet的Jframe。 我想将这些框架从主屏幕移到第二个屏幕,但是它不起作用。
我已经尝试过.setLocation(x,y)
方法,但是jframe仍然不会在屏幕边缘移动。
我什至尝试与graphicsdevice.getdefaultconfiguration.getBounds()
进行绑定,但结果为“ 0”,因此每次都会在主屏幕上的0,0上打开JFrame。
希望,任何人都可以理解我的问题并可以帮助我:D
P.S .:对不起,我的英语不好:S
答案 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