如何根据区域的宽度计算JavaFX中TextArea
的一行中的可见字符数(没有水平滚动!)?
我使用等宽字体,因此所有字符都具有相同的宽度。是否可以通过字体大小计算字体字符的宽度?
答案 0 :(得分:1)
是的,可以计算它们。 即使使用自定义字体。 您可以使用FontMetrics类。
Font font = Font.font("YourFont", 14);
FontMetrics fontMetrics = Toolkit.getToolkit().getFontLoader().getFontMetrics(font);
double length = fontMetrics.computeStringWidth("The text ");
但我猜这是错误的方向?
但如果您的字体是等宽字体,则可以计算一个字符的宽度 然后只需将textArea的宽度除以一个字符的宽度即可得到每行的最大字符数。
double widthPerChar = fontMetrics.computeStringWidth("A");
double maxCharsPerLine = textArea.getWidth() / widthPerChar;