あなたは、単にこの効果を達成するためにTableView
のitems
を変更することができます。
@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();
}
はい、もちろん。アイテムをテーブルのアイテムリストの別の位置に移動するだけです。 –
私は5行を作成し、 "UP"と "DOWN"の2つのボタンがあると仮定します。UPボタンをクリックすると、選択された特定の行を上方向にスワップし、DOWNボタンのユーザーは行を下向きの位置DOWNボタンをクリックすると表示されます。すなわち、ユーザーは、選択された行の中の特定の行を、TableViewのボタンをクリックすると任意の位置に置くことができます。javafxを使用してtableviewで可能ですか?もし可能なら親切に私にそれをするロジックを提供してください。 – user2715085