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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage