¿Cómo deshabilitar la reordenación de columnas en un TableView de JavaFX2?

JavaFX2'sTableView características "reordenamiento de la columna por el usuario en tiempo de ejecución". Me gustaría deshabilitar esta función para una tabla específica en mi aplicación.

En cuanto a la documentación de la API, no hay un gancho de API obvio para esto. Hay, sin embargo, lacolumns-propiedad. Según el documento, representa

Las TableColumns que forman parte de este TableView. A medida que el usuario reordena las columnas de TableView, esta lista se actualizará para reflejar el orden visual actual.

Con la esperanza de que al menos pudiera restablecer un cambio después de que ocurriera, intenté agregar un oyente para restablecer los cambios después del hecho.

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();
  }
}

Sin embargo, el oyente aborta con unIllegalStateException cuando pidowasPermutated.
¿Hay alguna forma de evitar la reordenación, o al menos revertirla programáticamente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta