gpt4 book ai didi

javafx - 在JAVAFX中切换Tableview中的单元格位置

转载 作者:行者123 更新时间:2023-12-02 08:53:43 24 4
gpt4 key购买 nike

是否可以在javafx中切换TableView中的行位置。

假设我创建了 5 行,并且有两个按钮“向上”和“向下”。单击“向上”按钮,用户可以将特定选定的行交换到向上方向,对于“向下”按钮,用户可以在单击“向下”按钮时将该行移动到向下位置;即用户可以使用 Button 单击将特定选定的行放置到 TableView 中的任何位置。使用 javafx 在 TableView 中可以实现这一点吗?如果可能的话,请为我提供一个这样做的逻辑。

最佳答案

只需修改TableViewitems即可达到此效果:

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

关于javafx - 在JAVAFX中切换Tableview中的单元格位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39922521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com