如果我创建了不可调整大小的JFrame窗口,并且启用了Windows Aero,则
在以下代码中,我希望第二个窗口被定位到第一个窗口的右侧,然而边框却重叠了。如果禁用Aero或者删除对
我是做错了什么还是这是一个 bug?如何同时显示两个不可调整大小的对话框,而不会有重叠的边框?
编辑:添加了截图(也将 frame2 更改为 JDialog 而不是 JFrame)
开启 Aero:
关闭 Aero:
开启 Aero 且可调整大小:
setLocation
似乎无法正确考虑窗口边框。在以下代码中,我希望第二个窗口被定位到第一个窗口的右侧,然而边框却重叠了。如果禁用Aero或者删除对
setResizable
的调用,则会按预期执行。import java.awt.Rectangle;
import javax.swing.JFrame;
public class FrameBorders {
public static void main(String[] args) {
JFrame frame1 = new JFrame("frame 1");
JFrame frame2 = new JFrame("frame 2");
frame1.setResizable(false);
frame2.setResizable(false);
frame1.setVisible(true);
Rectangle bounds = frame1.getBounds();
frame2.setLocation(bounds.x+bounds.width, bounds.y);
frame2.setVisible(true);
}
}
我是做错了什么还是这是一个 bug?如何同时显示两个不可调整大小的对话框,而不会有重叠的边框?
编辑:添加了截图(也将 frame2 更改为 JDialog 而不是 JFrame)
开启 Aero:
![Aero On](https://istack.dev59.com/1h6fz.webp)
![Aero Off](https://istack.dev59.com/BoI7N.webp)
![Aero On but resizable](https://istack.dev59.com/fUgeJ.webp)