我正试着把头绕过去 TreeTableViews
我在这方面做得很糟糕。
所以我有一个后台任务,它获取我想在应用程序中使用的数据 TreeTableView
,我不知道如何填充它,例如将treetableview的项属性绑定到任务的 valueProperty
. 我试着四处看看,但似乎找不到一个足够简单的例子来说明我在寻找什么。这可能是因为我的理解能力差,所以如果我能从这里得到一个解释,我将不胜感激。
主要类别:
public class App extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("scene.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
scene.fxml
<StackPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.2-internal"
xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.sample.Scene">
<TreeTableView fx:id="tblPerson" prefHeight="200.0" prefWidth="200.0">
<columns>
<TreeTableColumn fx:id="colName" prefWidth="75.0" text="Name">
<cellValueFactory>
<TreeItemPropertyValueFactory property="name"/>
</cellValueFactory>
</TreeTableColumn>
<TreeTableColumn fx:id="colLikes" prefWidth="75.0" text="Likes">
<cellValueFactory>
<TreeItemPropertyValueFactory property="like"/>
</cellValueFactory>
</TreeTableColumn>
</columns>
</TreeTableView>
</StackPane>
型号:
public class Person {
private String name;
private String like;
public Person(String name, String like) {
this.name = name;
this.like = like;
}
public String getName() {
return name;
}
public String getLike() {
return like;
}
}
背景工作者:
public class GetPeopleService extends Service<ObservableList<TreeItem<Person>>> {
@Override
protected Task<ObservableList<TreeItem<Person>>> createTask() {
return new GetPeopleTask();
}
private static class GetPeopleTask extends Task<ObservableList<TreeItem<Person>>> {
@Override
protected ObservableList<TreeItem<Person>> call() throws Exception {
ObservableList<TreeItem<Person>> myList = FXCollections.observableArrayList();
//person name should be root node
myList.addAll(
new TreeItem<>(new Person("Foo", "reading")),
new TreeItem<>(new Person("Foo", "writing")),
new TreeItem<>(new Person("Bar", "cycling")),
new TreeItem<>(new Person("Bar", "swimming")),
new TreeItem<>(new Person("Alice", "reading"))
);
return myList;
}
}
}
控制器类
public class Scene implements Initializable {
@FXML
private TreeTableView<Person> tblPerson;
GetPeopleService service = new GetPeopleService();
@Override
public void initialize(URL location, ResourceBundle resources) {
//tblPerson.itemsProperty().bind(....)
service.start();
}
}
我想做点东西让那个人 name
属性是根节点,可以将其展开以查看它们的相似项。从上面的例子来看,我们有3个顶级节点,foo、bar和alice。他们所有的喜好都显示在扩展上。
非常感谢。
暂无答案!
目前还没有任何答案,快来回答吧!