java - JDK 10 支持的计算字符串宽度(像素)的方法是什么

标签 java javafx fontmetrics

我不想使用 AWT。 我正在使用 FontMetrics.computeStringWidth() 但在 JDK 10 中消失了,破坏了我的应用程序。有没有不需要引入新框架的替代方案(我正在使用javafx)

最佳答案

您可以使用Text并从boundsInLocal属性获取大小。 (Text 节点不需要附加到场景即可工作。)

以下代码使矩形的宽度与文本的大小保持相同。

@Override
public void start(Stage primaryStage) throws Exception {
    Text text = new Text();
    TextField textField = new TextField();
    Rectangle rect = new Rectangle(0, 20);

    textField.textProperty().addListener((o, oldValue, newValue) -> {
        text.setText(newValue);
        rect.setWidth(text.getBoundsInLocal().getWidth());
    });

    Scene scene = new Scene(new VBox(textField, text, rect), 600, 400);
    primaryStage.setScene(scene);
    primaryStage.show();
}

关于java - JDK 10 支持的计算字符串宽度(像素)的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50696522/

相关文章:

Java Swing g.drawString 自动换行

java - Param.getValue.get() 不起作用

java - 登录成功后无法隐藏我的登录表单

c++ - QFontMetrics 返回不准确的结果

java - 在 java 中评估给定字体大小和字体系列的像素数

java - JSON前缀有什么用?

Java:为什么反序列化不调用构造函数以及最好的解决方法是什么?

java - android opengl 游戏

java - 如果文本中有阿拉伯语或波斯语字母,通过 fontmetrics 计算的字符串宽度非常慢

css - 为什么我的定制节点似乎没有响应修改