在JavaFX中,如果嵌套对象绑定发生变化,可以通过以下步骤来更新TableView:
下面是一个示例代码,演示如何更新JavaFX TableView中的嵌套对象绑定:
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class NestedObjectTableViewExample extends Application {
public static class Person {
private StringProperty name;
private Address address;
public Person(String name, Address address) {
this.name = new SimpleStringProperty(name);
this.address = address;
}
public StringProperty nameProperty() {
return name;
}
public Address getAddress() {
return address;
}
}
public static class Address {
private StringProperty city;
public Address(String city) {
this.city = new SimpleStringProperty(city);
}
public StringProperty cityProperty() {
return city;
}
}
@Override
public void start(Stage primaryStage) {
TableView<Person> tableView = new TableView<>();
TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
TableColumn<Person, String> cityColumn = new TableColumn<>("City");
nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
cityColumn.setCellValueFactory(cellData -> cellData.getValue().getAddress().cityProperty());
tableView.getColumns().addAll(nameColumn, cityColumn);
ObservableList<Person> data = FXCollections.observableArrayList(
new Person("John", new Address("New York")),
new Person("Jane", new Address("London"))
);
tableView.setItems(data);
VBox root = new VBox(tableView);
Scene scene = new Scene(root, 300, 200);
primaryStage.setScene(scene);
primaryStage.show();
// 模拟嵌套对象绑定发生变化
data.get(0).getAddress().cityProperty().set("San Francisco");
}
public static void main(String[] args) {
launch(args);
}
}
在上面的示例中,我们创建了一个包含嵌套对象的TableView。当嵌套对象的属性发生变化时,我们通过调用TableView的refresh()方法来更新视图。
这是一个简单的示例,你可以根据实际需求进行扩展和修改。希望对你有帮助!
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云