Wie deaktiviere ich die Spaltenumordnung in einer JavaFX2 TableView?
JavaFX2'sTabellenansicht Features "Spaltenumordnung durch den Benutzer zur Laufzeit". Ich möchte diese Funktion für eine bestimmte Tabelle in meiner Anwendung deaktivieren.
Betrachtet man das API-Dokument, so gibt es dafür keinen offensichtlichen API-Hook. Es gibt jedoch diecolumns
-Eigentum. Nach Angaben des Dokuments stellt es dar
Die TableColumns, die Teil dieser TableView sind. Wenn der Benutzer die TableView-Spalten neu anordnet, wird diese Liste entsprechend der aktuellen visuellen Reihenfolge aktualisiert.
In der Hoffnung, dass ich zumindest eine Änderung zurücksetzen kann, nachdem sie aufgetreten ist, habe ich versucht, einen Listener hinzuzufügen, um Änderungen nachträglich zurückzusetzen.
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();
}
}
Der Hörer bricht jedoch mit einem abIllegalStateException
wenn ich danach fragewasPermutated
.
Gibt es eine Möglichkeit, Nachbestellungen zu verhindern oder zumindest programmgesteuert rückgängig zu machen?