我正在寻找FontLoader.computeStringWidth的替代方法,因为这是com.sun包中的一个类,不应该使用。
这用于根据文本动态设置prefWidth,以便考虑文本字体大小(可能来自CSS)。有多个GridPane我希望第一列与所有网格对齐。
例如
由此:
| Column1Text |第2栏|
| Column1TextMore |第2栏|
| Column1TextSomeMore |第2栏|
对此(忽略点):
| Column1Text ................. |第2栏|
| Column1TextMore ......... |第2栏|
| Column1TextSomeMore |第2栏|
我确实在这里找到了一个接受的答案,即创建一个临时场景,向其中添加一个Text,然后调用applyCss并最终得到宽度。但是我不喜欢这个选择。一定是更好的方式。 https://stackoverflow.com/a/13020490/1835477
在我的情况下,我有多个网格,为每个网格创建一个场景/文本似乎是一个糟糕的解决方案(性能明智),而不是特别优雅。
答案 0 :(得分:1)
没有比this answer上描述的更好的解决方案了。
样品:
final Text text = new Text("XYZ");
new Scene(new Group(text));
text.applyCss();
final double width = text.getLayoutBounds().getWidth();