Change.wasPermutated() для списка столбцов TableView всегда возвращает false при изменении порядка столбцов.JAVA

Программисты JAVA общаются здесь
Anonymous
Change.wasPermutated() для списка столбцов TableView всегда возвращает false при изменении порядка столбцов.

Сообщение Anonymous »

У меня есть две таблицы, и обе таблицы должны иметь одинаковый порядок столбцов. Пользователь может изменить порядок столбцов в первой таблице. В этом случае программа должна обнаружить изменения в порядке столбцов в первой таблице и изменить порядок столбцов во второй таблице.
Проблема в том, что метод Change.wasPermutated() всегда возвращает false когда я меняю порядок столбцов с помощью мыши в первой таблице. Это мой код:

Код: Выделить всё

public class JavaFxTest7 extends Application {

private static class Student {

private int id;

private String name;

private int mark;

public Student(int id, String name, int mark) {
this.id = id;
this.name = name;
this.mark = mark;
}

public int getId() {
return id;
}

public String getName() {
return name;
}

public int getMark() {
return mark;
}
}

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage stage) {
var table1 = this.createTable();
var table2 = this.createTable();
table1.getColumns().addListener((ListChangeListener>)(change) -> {
while (change.next()) {
System.out.println("wasPermutated:" + change.wasPermutated());
if (change.wasPermutated()) {
int from = change.getFrom();
int to = change.getTo();
System.out.println("from: " + from + " to: " + to);
}
}
});
var scene = new Scene(new VBox(table1, table2), 300, 300);
stage.setScene(scene);
stage.show();
}

private TableView createTable() {
var table = new TableView(FXCollections.observableList(Arrays.asList(new Student(1, "Billy", 3),
new Student(2, "Johnny", 4), new Student(3, "Mickey", 5))));
var idColumn = new TableColumn("ID");
idColumn.setCellValueFactory((data) ->  new ReadOnlyObjectWrapper(data.getValue().getId()));
var nameColumn = new TableColumn("Name");
nameColumn.setCellValueFactory((data) ->  new ReadOnlyStringWrapper(data.getValue().getName()));
var markColumn = new TableColumn("Mark");
markColumn.setCellValueFactory((data) ->  new ReadOnlyObjectWrapper(data.getValue().getMark()));
table.getColumns().addAll(idColumn, nameColumn, markColumn);
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_FLEX_LAST_COLUMN);
return table;
}
}
Может ли кто-нибудь сказать, как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/783 ... when-colum

Вернуться в «JAVA»