我得到了一個TreeView。 對於此TreeView
中的每個條目,如果此TreeItem
變大,我會動態添加一堆其他TreeItem。 (通過ChangeListener
上expandedProperty
)JavaFX TreeItems未正確對齊
但通過代碼自動擴展一些TreeItems後,他們不會得到正確對齊,並且我得到這樣的:
滾動起來後,並降低一點,我注意到,有時它是對齊的,有時甚至更糟。
有誰知道解決方法?或者它是一個錯誤?
編輯:
這應該重現代碼:
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class TreeViewTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stg) throws Exception {
final TreeView<String> tree = new TreeView<String>();
TreeItem<String> root = new TreeItem<String>("Root");
genChilds(root, 50);
tree.setRoot(root);
BorderPane pane = new BorderPane();
pane.setCenter(tree);
TreeItem<String> leaf = root;
for(int j = 0; j < leaf.getChildren().size() && leaf.getChildren().size() != 0; j++){
System.out.println("b");
if(Math.random() < 0.5){
leaf = leaf.getChildren().get(j);
leaf.setExpanded(true);
tree.getSelectionModel().select(leaf);
}
}
stg.setScene(new Scene(pane));
stg.show();
}
protected int depth(TreeItem<String> selectedItem) {
return 0;
}
private void genChilds(final TreeItem<String> leaf, final int count) {
for(int i = 0; i < count; i++){
final int nr = i;
leaf.getChildren().add(new TreeItem<String>("" + i));
leaf.getChildren().get(i).expandedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean arg1, Boolean newV) {
if(newV){
leaf.getChildren().get(nr).getChildren().remove(0);
genChilds(leaf.getChildren().get(nr), count-1);
}else{
leaf.getChildren().get(nr).getChildren().clear();
leaf.getChildren().get(nr).getChildren().add(new TreeItem<String>(""));
}
}
});
//End at some Point
if(count-1 > 0)
leaf.getChildren().get(i).getChildren().add(new TreeItem<String>(""));
}
}
}
您使用的是什麼版本的JavaFX?你能發表一個簡單的例子來重現這個問題嗎? – assylias
目前我正在使用JFX 2.2。 – nZeloT
足夠奇怪:我目前正面臨這個問題,無法用示例代碼重現它。您提供的代碼也不會爲我重現問題。你現在有沒有找到解決辦法? – geisterfurz007