Я пытаюсь найти способ заполнить свой столбец tablePrice
ценами на определенные пункты меню. Код, показанный ниже, работает нормально, но мне пришлось создать ценовую переменную в классе MenuItem
, которой раньше не было. MenuItem
и PricedMenuItem
, а также другие классы генерируются из модели предметной области UML для системы управления рестораном. Этот текущий метод не рекомендуется, поскольку я модифицирую модель предметной области.
Прокомментированный раздел показывает, как далеко я продвинулся с ошибкой на setCellValueFactory()
. Есть ли способ, чтобы TableView
содержал столбцы разных классов? Если да, может ли кто-нибудь помочь мне заполнить столбец непосредственно из класса PricedMenuItem
?
MenuItem
имеет частное перечисление name
и itemCategory
, а также метод getCurrentPricedMenuItem()
.
PricedMenuItem
имеет как частный price
, так и getPrice()
метод.
@FXML private TableView<MenuItem> tableView;
@FXML private TableColumn<MenuItem, String> tableName;
@FXML private TableColumn<MenuItem, Double> tablePrice;
@FXML private TableColumn<MenuItem, ItemCategory> tableCategory;
@Override
public void initialize(URL location, ResourceBundle resources) {
tableName.setCellValueFactory(new PropertyValueFactory<MenuItem, String>("Name"));
tableCategory.setCellValueFactory(new PropertyValueFactory<MenuItem, ItemCategory>("itemCategory"));
tablePrice.setCellValueFactory(new PropertyValueFactory<MenuItem, Double>("price"));
/*way to retrieve price directly from PMI
tablePrice.setCellValueFactory(new Callback<CellDataFeatures<MenuItem, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call( CellDataFeatures<MenuItem, String> c) {
return new SimpleStringProperty(c.getValue().getValue().getCurrentPricedMenuItem().getPrice()+"");
}
});
*/
categoryDropDown1.getItems().setAll(ItemCategory.values());
categoryDropDown2.getItems().setAll(ItemCategory.values());
tableView.setItems(loadCurrentMenuItems());
updateBox("Select a menu item to edit.", Color.BLACK);
}
tablePrice
какTableColumn<MenuItem, Double>
, но возвращаетеStringProperty
. - person James_D   schedule 04.04.2018getValue()
дважды в цепочке вызовов методов, что не соответствует тому, как вы описываете свои классы модели, которые необходимо настроить. Что именно вы получаете, если раскомментируете закомментированный код? - person James_D   schedule 04.04.2018