上下文
在Microsoft Windows中,我可以通过使用快捷方式使应用程序的窗口占据显示的一半:
- 微信扫一扫
- 下载Win + →
这些快捷方式会导致“分屏”,如下图所示:
我想以同样的方式编程调整JFrame
的大小和位置。但是,我不知道如何达到预期的结果。
我以为解决办法是:
1.将框架的宽度设置为屏幕宽度的一半。
1.将框架的高度设置为屏幕高度(减去屏幕高度)。
1.将帧的位置设置为(0,0)。
下面是一个MCVE:
JFrame testFrame = new JFrame();
Rectangle windowBounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
testFrame.setSize(windowBounds.width / 2, windowBounds.height);
testFrame.setLocation((int) windowBounds.getMinX(), (int) windowBounds.getMinY());
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
testFrame.setVisible(true);
这几乎可以工作,但窗口底部和左侧的边距很小:
提问
在Windows计算机上,有没有一种方法可以使用Java或JNI以编程方式分割屏幕?
2条答案
按热度按时间tcomlyy61#
这里有一个解决方法,可以达到[我认为是]您想要的结果。
(Windows 10上的Oracle JDK 21)
JFrame
设置为最大化,即占据了整个屏幕。JFrame
。JFrame
显示在[计算机]屏幕上时,调整其大小。(方法
windowOpened
仅在窗口初始显示时调用一次。屏幕截图:
ddrv8njm2#
你在一个高度不稳定的地区。根据用户的偏好,边距宽度、边距高度/宽度或其他设置的值可能会有所不同。除非您使用“窗口管理器”功能来定位窗口,否则您将运行具有正确值的彩票。从Java中执行此操作可能需要涉及JNI和正确的Win32 API调用。
所以我尽量避免这种情况。为什么你需要它?如果你的应用程序在退出时保存了窗口的位置和大小,这样下次启动时就可以记住它们,这会有帮助吗?然后,用户仍然可以选择在哪里有窗口,而他不是固定在屏幕的左或右半边。