如果我創建不可調整大小的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