我在确定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样式化?
答案 0 :(得分:2)
CSS应用程序不会立即完成,因此,解决问题的方法是在文本大小实际发生变化时执行操作。
testText.layoutBoundsProperty()
是响应边界的属性,它存储一个不可变对象。还有其他属性,告诉你有关大小和位置的信息。您可以做的是 - 在此属性上附加更改侦听器,并在完成修改时应用更改。
答案 1 :(得分:1)
CSS-Styles应用于下一个所谓的脉冲旁边,layoutBounds会受到您放入的父容器的影响。