0

我在确定 JavaFX 2 中呈现的文本节点的宽度时遇到问题。使用标准样式时,一切正常:

Text testText = new Text("test");
double width = testText.getLayoutBounds().getWidth();

但是,如果我应用自定义 CSS 样式设置不同的字体大小,像这样

.text-class {
    -fx-font: 20px "Tahoma Bold";
}

并将 CSS 类应用于我上面的示例:

Text testText = new Text("test");
testText.getStyleClass().add("text-class");
double width = testText.getLayoutBounds().getWidth();

我将得到与第一种情况相同的结果,因此显然样式会延迟到稍后的某个时间点。

如何确定 JavaFX 2 中 CSS 样式文本的宽度?是否有可能以某种方式强制立即 CSS 样式?

4

2 回答 2

2

CSS 应用程序不是立即完成的,因此,解决问题的方法是在文本大小实际发生变化时执行您的操作。

testText.layoutBoundsProperty()

是响应边界的属性,它存储一个不可变对象。还有其他属性,告诉你大小和位置。您可以做的是在此属性上附加一个更改侦听器,并在修改完成后应用更改。

于 2013-03-08T12:00:48.660 回答
1

除了 layoutBounds 受您放入的父容器的影响之外,CSS 样式将应用于下一个所谓的脉冲。

于 2013-03-01T08:56:09.767 回答