2016-10-07 1 views
1

Возможно ли изменить положение строки в TableView в javafx.Переключение положения ячейки в Tableview в JAVAFX

Предположим, что я создал 5 строк, и есть две кнопки: «UP» и «DOWN». При нажатии кнопки «UP» пользователь может поменять выбранную строку вверх, а для кнопки «ВНИЗ» пользователь может переместить строку в нижнее положение при нажатии кнопки «ВНИЗ»; то есть пользователь может поместить выбранную строку выбора в любую позицию в TableView с использованием Button кликов. Возможно ли это в TableView с использованием javafx? Если это возможно, попросите меня логику сделать это.

+0

Да, конечно. Просто переместите элемент в другую позицию в списке элементов таблицы. –

+0

Предположим, что я создал 5 строк, и есть две кнопки: «UP» и «DOWN» .. при нажатии кнопки UP пользователь может поменять выбранную строку вверх, а для кнопки DOWN пользователь может переместить строку в положение вниз при нажатии кнопки DOWN. то есть. пользователь может поместить выбранную строку в любую позицию при нажатии кнопки в TableView .. возможно ли это в tableview с использованием javafx ?? если его возможные любезно предоставят мне логику сделать это ... – user2715085

ответ

2

Вы можете просто изменить 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(); 
} 
+0

@fabian ... я попробую .. и большое спасибо за логику .. это то, что я хочу .. – user2715085