В TableView функции JavaFX2 "изменение порядка столбцов пользователем во время выполнения ". Я бы хотел отключить эту функцию для одной конкретной таблицы в моем приложении.
Глядя на документ API, для этого нет очевидного API-интерфейса. Однако есть свойство columns
. Согласно документу, он представляет собой
Столбцы TableColumns, которые являются частью этого TableView. Когда пользователь меняет порядок столбцов TableView, этот список будет обновляться, чтобы отразить текущий визуальный порядок.
Надеясь, что я, по крайней мере, смогу сбросить изменение после того, как оно произошло, я попытался добавить слушателя для сброса изменений постфактум.
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();
}
}
Однако слушатель прерывает работу с IllegalStateException
, когда я запрашиваю wasPermutated
.
Есть ли способ предотвратить изменение порядка или, по крайней мере, отменить его программно?
onChanged
вызывается при перемещении столбцов. Однако я получаю исключение IllegalStateException наchange.wasPermutated()
. - person assylias   schedule 15.05.2012change.next()
, прежде чем проверять его состояние + движущиеся столбцы, кажется, устанавливают флаг на добавленный, а не перестановочный ... - person assylias   schedule 15.05.2012