mst*_*308 5 java user-interface swing jframe windows-10
我发现Windows 10和Java有问题。
JFrame frame = new JFrame();
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
当我创建一个新的JFrame并将其显示在屏幕上时,它通常应具有屏幕坐标x = 0和y = 0。实际上在Windows 10上确实具有这些坐标。
但是,实际上很丑陋的是,Windows 10中的所有窗口似乎在它们周围都有某种“不可见”的边框。因此,在这种情况下,窗口的位置看起来是x = 7且y = 0:

这只是一个看起来很丑陋的简单情况。我的软件具有一些逻辑,当您将另一窗口拖动到另一个窗口附近时,该逻辑会将一个窗口“捕捉”到另一个窗口。我想您可以想象,如果两个窗口之间有一个(2 * 7px =)14px的空间,那么应该将它显示为“链接”或“快照”给用户,这看起来是多么丑陋。

在Windows 7上,它运行完美!
那么有人知道这个问题并且有任何想法,如何解决该问题吗?我想也许可以找出Windows主题的当前名称和操作系统名称。如果它是“ Aero”和“ Windows 10”,则始终只计算-7px的x位置。以某种方式可能吗?还是直接找出不可见区域的宽度是多少?
感谢您对本主题的任何想法。
小智 2
这可以解决您的问题:
public static void setJFrameBounds(JFrame frame, int x, int y, int width, int height) {
Insets insets = ((Window)frame).getInsets();
frame.setBounds(x - insets.left, y, width, height);
}
Run Code Online (Sandbox Code Playgroud)
编辑:调用函数之前 JFrame 必须可见
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |