Я пытаюсь создать систему заказа пиццы в JavaFx, используя TableView
в графическом интерфейсе.Я, наконец, получил его на работу, но теперь я немного борюсь с макетом.Я не могу получить содержимое моего observablearraylist, чтобы показать только кнопку?
public class PizzaOrderingSystem extends Application {
private final TableView<MenuItem> table = new TableView<>();
private final ObservableList<MenuItem> ObservableList =
FXCollections.observableArrayList();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
stage.setTitle("Pizza Ordering System");
stage.setWidth(600);
stage.setHeight(600);
setTableappearance();
fillTableViewObservableListWithSampleMenuItem();
table.setItems(ObservableList);
//Name column
TableColumn<MenuItem, String> nameColumn = new TableColumn<>("Name of item");
nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
//Price column
TableColumn<MenuItem, Double> priceColumn = new TableColumn<>("Price of item");
priceColumn.setCellValueFactory(new PropertyValueFactory<>("price"));
table.getColumns().addAll(nameColumn, priceColumn);
addButtonToTable();
Scene scene = new Scene(new Group(table));
stage.setScene(scene);
stage.show();
}
private void setTableappearance() {
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
table.setPrefWidth(600);
table.setPrefHeight(600);
}
private void fillTableViewObservableListWithSampleMenuItem() {
ObservableList.addAll(new Pizza("Margherita", 50),
new Pizza("Hawaii", 55),
new Pizza("Marinara", 70),
new Pizza("Meat Lovers", 70),
new Pizza("Calazone", 60),
new Burger("Burger", 60),
new Burger("Cheeseburger", 65),
new Burger("Baconburger", 65),
new Soda("Coca cola", 25),
new Soda("Coca cola light", 25),
new Soda("Fanta", 25),
new Soda("Faxe kondi", 25));
}
private void addButtonToTable() {
TableColumn<MenuItem, Void> button = new TableColumn("Select your items");
Callback<TableColumn<MenuItem, Void>, TableCell<MenuItem, Void>>
cellFactory = new Callback<TableColumn<MenuItem, Void>, TableCell<MenuItem, Void>>() {
@Override
public TableCell<MenuItem, Void> call(final TableColumn<MenuItem, Void> param) {
final TableCell<MenuItem, Void> cell = new TableCell<MenuItem, Void() {
private final Button button = new Button("Select");
{
button.setOnAction((ActionEvent event) -> {
MenuItem menuItem = getTableView().getItems().get(getIndex());
System.out.println("selectedMenuItem: " + menuItem);
});
}
@Override
public void updateItem(Void item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setGraphic(null);
} else {
setGraphic(button);
}
}
};
return cell;
}
};
button.setCellFactory(cellFactory);
table.getColumns().add(button);
}
}