2015-07-16 3 views
0

В настоящее время у меня есть табличное представление, которое позволяет пользователю сделать один выбор. Я хочу разрешить пользователю делать несколько выборов из таблицы, которые будут установлены как ключи в hashMap, как бы я мог изменить текущий код, чтобы это разрешить. Любая помощь оценивается.javaFX select mutlipe rows form tableview, положить в HashMap

@FXML 
TableView<Run> BookingRunTable; 

@FXML 
TableColumn<Run, String> BookingRunName; 

@FXML 
TableColumn<Run, Character> BookingRunSize; 

@FXML 
TableColumn<Run, Double> BookingRunPrice; 

@Override 
public void initialize(URL location, ResourceBundle resources) { 
    availableRuns = FXCollections.observableArrayList(availableRunList()); 

    BookingRunName.setCellValueFactory(new PropertyValueFactory<Run, String>("RunName")); 
    BookingRunSize.setCellValueFactory(new PropertyValueFactory<Run, Character>("RunType")); 
    BookingRunPrice.setCellValueFactory(new PropertyValueFactory<Run, Double>("pricePerNight")); 

    BookingRunTable.setItems(availableRuns); 
    BookingRunTable.getSelectionModel().selectedItemProperty() 
      .addListener(new ChangeListener<Run>() { 
       // sets the selected properties of run to detail containers 
       @Override 
       public void changed(
         ObservableValue<? extends Run> observable, 
         Run oldValue, Run newValue) { 
        checkRequiredInfo(); 
       } 
      }); 

    // Then i want the selected rows of the tableview to be put into a Map as the key, so later i can assign other values to the key. 
    HashMap<Integer, Integer> bookingDogRunMap = new HashMap<Integer, Integer>(); 

    bookingDogRunMap.put(BookingRunTable.getSelectionModel().getSelectedItem().getRunID(), 0); 
} 
+0

Пожалуйста, используйте стандартные [соглашения об именах] (http://www.oracle.com/technetwork/java/codeconventions-135099.html) в коде, которые вы добавите (например, 'BookingRunTable' должен быть' bookingRunTable' и т. д.). Это упрощает чтение и позволяет форматированию правильно форматировать ваш код. –

ответ

0

Чтобы разрешить множественный выбор, в initialize() вызова метода

bookingRunTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); 

Для того, чтобы обработать все выбранные строки, использовать метод getSelectedItems() (обратите внимание на множественное число) в selectionModel. Например:

for (Run run : bookingRunTable.getSelectionMode().getSelectedItems()) { 
    bookingDogRunMap.put(run.getRunID(), 0); 
} 
Смежные вопросы