gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:22:24 24 4
gpt4 key购买 nike

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

我尝试过.setLocation(x,y)方法,但jframes仍然不会移动到屏幕边缘。

我什至尝试使用graphicsdevice.getdefaultconfiguration.getBounds()进行绑定(bind),但结果是“0”,所以它每次都会在我的主屏幕上打开0,0上的JFrame .

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

P.S.:抱歉我的英语不好:S

最佳答案

根据您的 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 英寸,另一个大屏幕位于左侧:

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

说明:左屏幕的左侧位于 x=-1920

关于java - 如何在其他屏幕上移动 JFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54244146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com