Мне нужно добавить изменения в механизм сортировки столбцов по умолчанию, и для этого мне нужно работать с событиями мыши в заголовке столбца имени таблицы. И для этого я использую nameColumn.addEventFilter(...). Однако обработчик не вызывается, когда я нажимаю заголовок столбца имени. Это мой код:
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 table = this.createTable();
var scene = new Scene(table, 300, 300);
stage.setScene(scene);
stage.show();
}
private TableView createTable() {
var table = new TableView();
table.getItems().addAll(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()));
nameColumn.addEventFilter(javafx.scene.input.MouseEvent.MOUSE_CLICKED, (e) -> {
System.out.println("Clicked on name column");
});
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;
}
}
Мне нужно добавить изменения в механизм сортировки столбцов по умолчанию, и для этого мне нужно работать с событиями мыши в заголовке столбца имени таблицы. И для этого я использую nameColumn.addEventFilter(...). Однако обработчик не вызывается, когда я нажимаю заголовок столбца имени. Это мой код: [code]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 table = this.createTable(); var scene = new Scene(table, 300, 300); stage.setScene(scene); stage.show(); }
private TableView createTable() { var table = new TableView(); table.getItems().addAll(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()));
nameColumn.addEventFilter(javafx.scene.input.MouseEvent.MOUSE_CLICKED, (e) -> { System.out.println("Clicked on name column"); });
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; } } [/code] Может ли кто-нибудь сказать, как это исправить?