不可調整大小的視窗邊框和定位
在使用不可調整大小的JFrame 並啟用Windows Aero 的情況下,setLocation 方法的行為在考慮視窗邊框時可能會顯得不一致。
為了說明此行為,請考慮以下程式碼snippet:
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); } }
使用此程式碼,您可能會期望frame2 位於frame1 的右側。但是,當啟用 Windows Aero 時,兩個框架的邊框會重疊。
說明與解決方案
Windows Aero 對不可調整大小的視窗套用不同的樣式,導致較粗的邊框。由於 setLocation 方法考慮窗口的原始尺寸而不考慮邊框厚度,因此它錯誤地定位了窗口,導致重疊問題。
要實現並排放置的兩個不可調整大小的框架的所需行為,無需重疊邊框,您可以:
以上是為什麼使用 Windows Aero 時不可調整大小的 JFrame 會重疊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!