当前位置: 首页 > 知识库问答 >
问题:

确定JavaFX字体的宽度和高度

端木令
2023-03-14

我有一个字体对象,我需要字体的宽度和高度。我知道getSize()返回字体的高度,因为字体的点号通常是高度,但在确定字体的宽度时,我不知所措。

或者,能够确定字体支持的每个特定字符的宽度也是一个可接受的解决方案。

我的最佳猜测是,宽度是在使用loadFont方法时指定的,但文档没有指定size参数是表示字体的宽度还是高度。

使用的所有字体都是单空格字体,如DejaVu Sans mono、GNU FreeMono和Lucida Sans Unicode。

共有2个答案

沃宇
2023-03-14
FontMetrics metrics = Toolkit.getToolkit().getFontLoader().getFontMetrics(font);
float charWidth = metrics.computeStringWidth("a");
float charHeight = metrics.getLineHeight();
祁辰阳
2023-03-14

我也遇到过同样的问题,似乎没有简单的方法。我的解决方案是用正确的字体创建一个< code>Text元素,并检查它的大小:

double computeTextWidth(Font font, String text, double wrappingWidth) {
    Text helper = new Text();
    helper.setFont(font);
    helper.setText(text);
    // Note that the wrapping width needs to be set to zero before
    // getting the text's real preferred width.
    helper.setWrappingWidth(0);
    helper.setLineSpacing(0);
    double w = Math.min(helper.prefWidth(-1), wrappingWidth);
    helper.setWrappingWidth((int)Math.ceil(w));
    double textWidth = Math.ceil(helper.getLayoutBounds().getWidth());
    return textWidth;
}

如果我没记错的话,这里的技巧是将prefWidth设置为-1。请参阅JavaDoc。

 类似资料:
  • 我如何才能使它的应用程序是优化的所有屏幕?

  • 我会保持简短直截了当,这样我就明白了: > vw根据视区宽度更改字体大小。 VH根据视区高度更改字体大小。 我的问题是; 有没有一种方法可以根据视区的宽度和高度来缩放我的字体大小?因此,改变浏览器的高度和宽度将适当地缩放我的字体大小。 我这样问是因为我想根据它们所在的容器适当地缩放我的文本大小,我的问题是容器缩放到100%的宽度和100%的高度。因此,根据高度和宽度来缩放文本大小似乎是合乎逻辑的,

  • 我是JavaFX的新手,我正在编写一个简单的登录应用程序,我想在我的web浏览器中启动它。 我如何获得web浏览器的宽度和高度?是否有一些对象用于此目的,或一个方法,我希望能够调整应用程序的大小,每当浏览器的大小改变。

  • 显然,有两个方法和 是这样的: 我看了这篇文章,但它推荐了一种已弃用的方法: 如何在爪哇fx中获取标签

  • 主要内容:1. width,2. height,3. max-width 和 max-height,4. min-width 和 min-heightCSS 尺寸属性指的就是元素的宽度和高度属性,虽然说非常简单,但却是必须掌握的技能。CSS 中提供了 width、height、max-width、min-width、max-height 和 min-height 等几个属性来设置元素的宽度和高度,这些元素使用起来非常简单,下面我们就来简单介绍一下。 1. width 通过 width 属性可以设

  • 请原谅我,如果这是很难遵循,但我有一个具体的问题,我需要帮助解决。我做了大量的研究,尝试了许多解决方案,但都没有奏效。 我的问题是,我有一个类,它正在扩展(下面的代码),这个类需要使用宽度和高度来缩放图像(我正在制作一个程序,用户可以创建自定义教程,包括图像)。当我实例化这个时,我得到一个错误,说宽度和高度必须非零。我明白这是因为布局管理器还没有传递首选大小,但是我不知道如何将该大小传递给面板。在