【问题标题】:Switching the cell position in Tableview in JAVAFX在 JAVAFX 的 Tableview 中切换单元格位置
【发布时间】:2016-10-07 17:01:27
【问题描述】:

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

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

【问题讨论】:

  • 是的,当然。只需将项目移动到表格项目列表中的不同位置即可。
  • 假设我创建了一个 5 行,并且有两个按钮为“UP”和“DOWN”。点击 UP 按钮用户可以将特定选定的行向上交换,对于 DOWN 按钮用户单击 DOWN 按钮可以将行向下移动。 IE。用户可以通过单击 TableView 中的按钮将特定的选定行放置到任何位置。在使用 javafx 的 tableview 中这可能吗?如果可能的话,请给我一个这样做的逻辑......

标签: javafx tableview


【解决方案1】:

你可以简单地修改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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多