【问题标题】:How to use TextLayout without deprecated impl_getNativeFont method [duplicate]如何在不弃用 impl_getNativeFont 方法的情况下使用 TextLayout [重复]
【发布时间】:2017-08-13 17:59:07
【问题描述】:

我需要使用 textlayout 对象知道文本的大小。 我找到了以下一堆代码

final TextLayout LAYOUT = Toolkit.getToolkit().getTextLayoutFactory().createLayout();
LAYOUT.setContent(text != null ? text : "", font.impl_getNativeFont());
LAYOUT.setLineSpacing(1.0f);
LAYOUT.setWrapWidth(100.0f);
LAYOUT.setBoundsType(TextLayout.BOUNDS_CENTER);
return LAYOUT.getBounds().getHeight();

代码工作正常,除了我有一条关于 getNativeFont 的警告消息,它似乎已被弃用,因为我知道我需要的是文本的高度

所以我的问题是:合适的方法是什么?

提前致谢!

【问题讨论】:

  • TextLayout 是一个com.sun.javafx.scene.text 类。 com.sun.javafx 包中的任何 API 或类都不是公开支持的 API,也不保证在未来的 Java 版本中可用。因此,除非您别无选择,否则不建议使用 TextLayout,并且您还可以控制运行应用程序的 JavaFX 运行时版本,以确保它与您的应用程序兼容。
  • 您可以尝试How to calculate the pixel width of a String in JavaFX? 中列出的技术,看看是否适合您。

标签: javafx fonts


【解决方案1】:

谢谢,

它对我有用:

Text theText = new Text(theLabel.getText());
theText.setFont(theLabel.getFont());
double width = theText.getBoundsInLocal().getWidth();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 2021-07-12
    • 1970-01-01
    • 2015-08-17
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多