创建不可调整大小的 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中文网其他相关文章!