創建不可調整大小的JFrame 時,setLocation 方法似乎沒有正確考慮視窗如果啟用了Windows Aero,則為邊框。結果,邊界重疊。如果停用 Aero 或刪除 setResizing 調用,則行為符合預期。
設定不可調整大小的容器的邊界時會出現此問題。根據使用者特定於平台的字體設置,更改邊界可能會導致文字不可見。
設定不可調整大小的容器的邊界的正確方法是確保任何文字無論主機平台的預設字體如何,都保持可見。這可以透過根據字串的像素寬度和容器的高度調整邊界來實現。
例如,以下程式碼使用computeStringWidth計算字串的像素寬度並相應地設定幀大小:
JLabel label = new JLabel(s + "3, 1, 4, 1, 5, 9", JLabel.LEFT); int w = SwingUtilities.computeStringWidth( label.getFontMetrics(label.getFont()), s); int h = f.getHeight(); f.setSize(w, h); f.setResizable(false);
這可確保無論用戶平台上的字體設定如何,文字都可見的。
以上是如何在 Windows Aero 中正確定位具有可見文字的不可調整大小的 JFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!