如何在Java Swing中设置当前屏幕大小?

我第一次使用swing API来获取win应用程序的屏幕分辨率。

如何在Java Swing中设置当前屏幕大小?

问题取决于。 您想要全屏尺寸还是可用的屏幕尺寸(减去任务栏和底座之类的东西)? 您想要默认屏幕还是特定屏幕?

全屏尺寸,任何设备……

首先,您需要获取对当前GraphicsEnvironment的引用…

 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 

然后你可以获取系统上可用的GraphicsDevice列表……

 GraphicsDevice lstGDs[] = ge.getScreenDevices(); 

或者,如果您只想要当前/默认屏幕,则可以使用…

 GraphicsDevice device = ge.getDefaultScreenDevice(); 

无论如何,接下来,您需要从设备中获取GraphicsConfiguration

 GraphicsConfiguration cf = device.getDefaultConfiguration(); 

最后,你可以抓住屏幕边界,这包括虚拟桌面内屏幕的位置和大小……

 Rectangle bounds = cf.getBounds(); 

安全/可视屏幕尺寸……

这会考虑操作系统可能在屏幕上显示的任务栏或停靠栏或其他UI元素之类的内容,您不应该尝试这些内容并将其显示在后面。 不是每个人都在屏幕的底部有这些;)

首先从您选择的GraphicsDevice获取GraphicsDevice ,从中获取屏幕边界…

 GraphicsDevice device = ge.getDefaultScreenDevice(); // or what ever device you want... GraphicsConfiguration cf = device.getDefaultConfiguration(); Rectangle bounds = cf.getBounds(); 

接下来,获取屏幕插图…

 Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc); 

这表示操作系统占用的区域显示其额外的东西。 现在,减少插图的屏幕界限……

 bounds.x += insets.left; bounds.y += insets.top; bounds.width -= (insets.left + insets.right); bounds.height -= (insets.top + insets.bottom); 

这表示窗口可以出现的安全/可视区域,而不被其他元素阻挡…

让Swing API为您做到……

或者您可以使用JFrame#setExtendState JFrame.MAXIMIZED_BOTH其传递给JFrame.MAXIMIZED_BOTH ,它将为您完成所有操作…

使用

 Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); double width = dimension .getWidth(); double height = imension .getHeight(); 

对于您的JFrame,请使用setSize(Dimension dimension)来设置大小

尝试这个

 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int height = screenSize.height; int width = screenSize.width; //set size to the JFrame this.setSize(width,height);