Urs*_*pke 6 java user-interface tableview javafx-2
JavaFX2的TableView功能"用户在运行时重新排序列".我想为我的应用程序中的一个特定表禁用此功能.
查看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();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,IllegalStateException当我要求时,听众会中止wasPermutated.
有没有办法防止重新排序,或者至少以编程方式还原它?
请参阅下面的SSCCE,它显示侦听器被调用 - 但标志added在移动列时设置为.请注意,您需要next()在使用更改之前进行调用,否则您将获得更改IllegalStateException.有关简单的规范示例,请参阅javadocListChangeListener.Change.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8000 次 |
| 最近记录: |