如何在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);