加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在java中获取字符串大小(没有可用的Graphics对象)

发布时间:2020-12-14 16:30:59 所属栏目:Java 来源:网络整理
导读:我正在尝试编写应用程序,需要使用 Java中的Graphics2D类绘制许多字符串.我需要获取每个String对象的大小(以计算每个字符串的确切位置). 有这么多的字符串,应该在paint()方法被调用之前完成,只有在程序开头只有一次(所以我还没有Graphics2D对象).我知道有一个
我正在尝试编写应用程序,需要使用 Java中的Graphics2D类绘制许多字符串.我需要获取每个String对象的大小(以计算每个字符串的确切位置).
有这么多的字符串,应该在paint()方法被调用之前完成,只有在程序开头只有一次(所以我还没有Graphics2D对象).我知道有一个方法Font.getStringBounds(),但它需要一个FontRenderContext对象作为参数.

当我试图创建我自己的对象:

FontRenderContext frc = new FontRenderContext(MyFont.getTransform(),true,true)

然后获取字符串边界我总是得到不同的大小,当我在paint()方法中使用Graphics2D.getFontRenderContext()方法获取FontRenderContext时.差异不大(约1E-3),但我不知道为什么有什么区别?

但是,有没有更好和安全的方式来获取字符串的大小?

Thnx提前任何帮助!

解决方法

尝试与 FontMetrics课; stringWidth方法返回一个字符串的大小.
一个例子:
JComponent c = getSomeKindOfJComponent();
FontMetrics fm = c.getFontMetrics(c.getFont()); // or another font
int strw = fm.stringWidth("My text");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读