by Guest » 20 Jan 2025, 18:35
Ich verwende das MVVM-Muster. In ViewModel habe ich also nur Daten und die Tabelle befindet sich in View. Ich benötige die Tabelle, um die Elemente zu sortieren, wenn ich die Elementliste ändere. Das ist mein Code:
Code: Select all
public class NewMain extends Application {
private static class ViewModel {
ObservableList
people = FXCollections.observableArrayList(
new Person("Alice", "25"),
new Person("Bob", "30"),
new Person("Charlie", "20")
);
void update() {
people.clear();
people.addAll(new Person("Mike", "35"), new Person("David", "35"));
}
}
@Override
public void start(Stage primaryStage) {
var viewModel = new ViewModel();
TableView table = new TableView();
table.setItems(viewModel.people);
TableColumn nameColumn = new TableColumn("Name");
nameColumn.setCellValueFactory(new PropertyValueFactory("name"));
TableColumn ageColumn = new TableColumn("Age");
ageColumn.setCellValueFactory(new PropertyValueFactory("age"));
table.getColumns().addAll(nameColumn, ageColumn);
table.getSortOrder().add(nameColumn);
table.getItems().addListener((ListChangeListener
Ich verwende das MVVM-Muster. In ViewModel habe ich also nur Daten und die Tabelle befindet sich in View. Ich benötige die Tabelle, um die Elemente zu sortieren, wenn ich die Elementliste ändere. Das ist mein Code:
[code]public class NewMain extends Application {
private static class ViewModel {
ObservableList
people = FXCollections.observableArrayList(
new Person("Alice", "25"),
new Person("Bob", "30"),
new Person("Charlie", "20")
);
void update() {
people.clear();
people.addAll(new Person("Mike", "35"), new Person("David", "35"));
}
}
@Override
public void start(Stage primaryStage) {
var viewModel = new ViewModel();
TableView table = new TableView();
table.setItems(viewModel.people);
TableColumn nameColumn = new TableColumn("Name");
nameColumn.setCellValueFactory(new PropertyValueFactory("name"));
TableColumn ageColumn = new TableColumn("Age");
ageColumn.setCellValueFactory(new PropertyValueFactory("age"));
table.getColumns().addAll(nameColumn, ageColumn);
table.getSortOrder().add(nameColumn);
table.getItems().addListener((ListChangeListener