是否可以TableView在 javafx.a 中切换行位置?
假设我创建了 5 行,并且有两个按钮“UP”和“DOWN”。单击向上按钮,用户可以将特定选定的行向上交换,对于向下按钮,用户可以通过单击向下按钮将行移动到向下位置;即用户可以TableView使用Button点击将特定选定行放置到任何位置。这有可能在TableView使用JavaFX?如果可能的话,请为我提供一个逻辑来做到这一点。
你可以简单地修改items的TableView达到这样的效果:
@Override
public void start(Stage primaryStage) {
TableView<Item<String>> tableView = createTableView();
Button upButton = new Button("Up");
Button downButton = new Button("Down");
ReadOnlyIntegerProperty selectedIndex = tableView.getSelectionModel().selectedIndexProperty();
upButton.disableProperty().bind(selectedIndex.lessThanOrEqualTo(0));
downButton.disableProperty().bind(Bindings.createBooleanBinding(() -> {
int index = selectedIndex.get();
return index < 0 || index+1 >= tableView.getItems().size();
}, selectedIndex, tableView.getItems()));
upButton.setOnAction(evt -> {
int index = tableView.getSelectionModel().getSelectedIndex();
// swap items
tableView.getItems().add(index-1, tableView.getItems().remove(index));
// select item at new position
tableView.getSelectionModel().clearAndSelect(index-1);
});
downButton.setOnAction(evt -> {
int index = tableView.getSelectionModel().getSelectedIndex();
// swap items
tableView.getItems().add(index+1, tableView.getItems().remove(index));
// select item at new position
tableView.getSelectionModel().clearAndSelect(index+1);
});
BorderPane root = new BorderPane(tableView);
root.setRight(new VBox(10, upButton, downButton));
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |