如果我创建不可调整大小的JFrame,并且启用了Windows 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);
}
}
我做错了什么或这是一个错误? 如何可以并排显示2个不可重复的对话框而不会有重叠边框?
编辑:加入截图(也改变帧2到一个JDialog,而不是一个JFrame)
航空在:
航空关:
航空开,但可调整大小:
为什么你想不具有重叠边界显示并排2 unresizable对话框的一面呢? –
我想显示最初并排放置的两个窗口 – msam
请不要在不可调整大小的容器上设置任意边界。参见[*使用多个JFrames,好/坏实践*](http://stackoverflow.com/a/9554657/230513)? – trashgod