Jak wyłączyć zmianę kolejności kolumn w widoku tabelarycznym JavaFX2?
JavaFX2TableView funkcje „Zmiana kolejności kolumn przez użytkownika w czasie wykonywania”. Chciałbym wyłączyć tę funkcję dla jednej konkretnej tabeli w mojej aplikacji.
Patrząc na dokument API, nie ma oczywistego haka API dla tego. Istnieje jednakcolumns
-własność. Według doktora reprezentuje
Kolumny TableColumns, które są częścią tego TableView. Ponieważ użytkownik zmienia kolejność kolumn TableView, lista ta zostanie zaktualizowana, aby odzwierciedlić bieżące porządkowanie wizualne.
Mając nadzieję, że przynajmniej uda mi się zresetować zmianę po jej wystąpieniu, spróbowałem dodać słuchacza, aby zresetować zmiany po fakcie.
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();
}
}
Jednak słuchacz rezygnuje zIllegalStateException
kiedy o to proszęwasPermutated
.
Czy istnieje sposób, aby zapobiec zmianie kolejności lub przynajmniej przywrócić go programowo?