How to disable column-reordering in a JavaFX2 TableView?

前端 未结 1 1839
梦如初夏
梦如初夏 2020-12-19 09:14

JavaFX2\'s TableView features \"Column reordering by the user at runtime\". I\'d like to disable this feature for one specific table in my Application.

Looking at t

相关标签:
1条回答
  • 2020-12-19 09:45

    See below a SSCCE that shows that the listener gets called - but the flag is set to added when moving columns. Note that you need to call next() before using the change or you will get an IllegalStateException. See the javadoc of ListChangeListener.Change for a simple canonical example.

    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) {
        final TableView tableView = new TableView();
        final TableColumn[] columns = {new TableColumn("1"), new TableColumn("2")};
        tableView.getColumns().setAll(columns);
        tableView.getColumns().addListener(new ListChangeListener() {
            public boolean suspended;
    
            @Override
            public void onChanged(Change change) {
                change.next();
                if (change.wasReplaced() && !suspended) {
                    this.suspended = true;
                    tableView.getColumns().setAll(columns);
                    this.suspended = false;
                }
            }
        });
        stage.setScene(new Scene(tableView));
        stage.show();
      }
    }
    
    0 讨论(0)
提交回复
热议问题