Các tính năng TableView của JavaFX2 "Cột sắp xếp lại theo người dùng khi chạy". Tôi muốn tắt tính năng này cho một bảng cụ thể trong Ứng dụng của tôi.Làm thế nào để vô hiệu hóa sắp xếp lại cột trong một TableView JavaFX2?
Nhìn vào tài liệu API, không có móc API rõ ràng cho việc này. Tuy nhiên, có columns
-property. Theo tài liệu, nó đại diện cho
BảngColumn là một phần của TableView này. Khi người dùng sắp xếp lại các cột TableView, danh sách này sẽ được cập nhật để phản ánh thứ tự trực quan hiện tại.
Hy vọng rằng ít nhất tôi cũng có thể đặt lại thay đổi sau khi xảy ra, tôi đã thử thêm người nghe để đặt lại thay đổi sau khi thực tế.
import javafx.application.Application;
import javafx.collections.ListChangeListener;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
public class TableTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
TableView tableView = new TableView();
tableView.getColumns().setAll(new TableColumn(), new TableColumn());
tableView.getColumns().addListener(new ListChangeListener() {
@Override
public void onChanged(Change change) {
if (change.wasPermutated()){
change.reset();
}
}
});
stage.setScene(new Scene(tableView));
stage.show();
}
}
Tuy nhiên, người nghe hủy bỏ IllegalStateException
khi tôi yêu cầu wasPermutated
.
Có cách nào để ngăn chặn sắp xếp lại hoặc ít nhất là hoàn nguyên chương trình không?
Tôi vừa thử phương thức đó và phương thức 'onChanged' được gọi khi di chuyển các cột xung quanh. Tuy nhiên tôi nhận được một IllegalStateException trên 'change.wasPermutated()'. – assylias
Trong trường hợp đó, mã của tôi có lẽ quá phức tạp. Tôi sẽ thiết lập một ví dụ tối thiểu và tiếp tục từ đó. –
Chỉ cần chỉnh sửa câu trả lời của tôi và nó hoạt động. Trước tiên bạn cần phải gọi 'change.next()' trước khi kiểm tra trạng thái của nó + cột di chuyển dường như thiết lập cờ để thêm, không hoán vị ... – assylias