首页 >Java >java教程 >如何在 Windows Aero 中正确定位具有可见文本的不可调整大小的 JFrame?

如何在 Windows Aero 中正确定位具有可见文本的不可调整大小的 JFrame?

Linda Hamilton
Linda Hamilton原创
2024-12-09 05:35:13824浏览

How to Correctly Position Non-Resizable JFrames with Visible Text in Windows Aero?

不可调整大小的窗口边框和定位

问题

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn