2013-03-01 94 views
0

我有一個問題確定的JavaFX 2.呈現的文本節點的寬度當使用標準樣式,一切工作正常:確定JavaFX中的CSS樣式文本大小/強制樣式?

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

你嘗試聽更改屬性testText.layoutBoundsProperty()嗎?我認爲,沒有辦法馬上應用CSS,因爲你想 – 2013-03-01 08:50:15

回答

2

CSS應用程序不是一成不變地完成的,因此,解決問題的方法是在文本大小實際發生變化時執行您的操作。

testText.layoutBoundsProperty() 

屬性,它響應邊界,它存儲一個不可變的對象。還有其他屬性,告訴你關於大小和位置。你可以做的 - 就是在這個屬性上附加一個更改監聽器,並在修改完成後應用更改。

+1

非常感謝,它效果很好! 雖然我選擇了聽boundsInParentProperty(),但在閱讀http://weblogs.java.net/blog/2009/07/09/javafx12-understanding-bounds 後顯然這是正確的選擇(顯然沒有更好的當前JavaFX版本的文檔)。 – winne2 2013-03-11 09:20:25

1

CSS樣式應用於下一個所謂的脈衝旁邊,而layoutBounds受到您放入其中的父容器的影響。

+0

好吧,謝謝你的「脈衝」提示 - 但我該如何正確確定樣式文本的高度呢? – winne2 2013-03-07 12:33:57

+0

不知道爲什麼你需要的大小我不知道我應該建議給你什麼?那麼你需要什麼大小? – tomsontom 2013-03-07 15:38:02