2016-05-05 102 views
0

這是關於javaFX8的問題。
我有listView和自定義cellFactory。
每一個細胞是: good cell view 是:
1.AnchorPane
1.1.Circle
1.1.AnchorPane
1.1.1.Label
1.1.2.Label
1.1.3.TextFlow
ListCell高度取決於TextFlow的大小

但是,如果在TextFlow中的文本很大,我看到這個圖像 bad cell view

因此,在updateItem menthod我這樣做

Text text = new Text(); 
text.textProperty().setValue(data.getMessage()); 
.... 
messageTextFlow.getChildren().addAll(text); 
.... 
double height = (messageTextFlow.getChildren().get(0)).getLayoutBounds().getHeight() + 28; 
anchorPane.setPrefHeight(height); 

但它不工作的第一次。該單元格的正確高度再次暴露,我將更新此列表視圖。

我該如何解決這個問題?是否有任何方法來連接TextFlow高度和ListCell高度?

謝謝!

+3

請加[最小,完整,可驗證的示例](HTTP://計算器.com/help/mcve)給你的問題。這使人們更容易調試併爲您的問題提供解決方案。 – ItachiUchiha

+2

當你想像這樣管理佈局時,不要使用'AnchorPane's。 [佈局窗格](http://docs.oracle.com/javase/8/javafx/layout-tutorial/builtin_layouts.htm#JFXLY102)已經爲您管理佈局,例如,將這兩個標籤放入一個'HBox'中,將'HBox'和'TextFlow'放入一個'VBox'中,然後在另一個'HBox'中放入'Circle'和'VBox'。在所有佈局窗格上設置適當的對齊方式。 (正如所建議的那樣,如果你想得到更準確的答案,你需要創建併發佈一個[MCVE]。) –

回答

-1

我找到答案的 https://stackoverflow.com/a/26152904/1299231

我需要做的僅僅是添加此兩行內容:

parentNode.applyCss(); 
parentNode.layout() 
+0

雖然這是一個真正的黑客攻擊。只需使用更合適的佈局窗格即可。 –