Как разделить содержимое ArrayList<String, int> на два разных столбца
У меня есть ArrayList, который вы видите внизу. Я хочу разделить мой ArrayList на три столбца, один из которых показывает "категорию" предмета, например, пиццу или бургер, другой показывает названия, например, Маргариту, а другой показывает цены. Кроме того, я хочу, чтобы для каждого элемента была строка, поэтому 12 строк. Я пытался ввести содержимое моего ArrayList в GridPane, но я просто не могу заставить это работать.
public abstract class MenuItem {
private String name;
private double price;
public MenuItem(String name, double price) {
this.name = name;
this.price = price;
}
public void setName(String name) {
}
public String getName() {
return name;
}
public void setPrice(double price) {
}
public double getPrice() {
return price;
}
public class OrderMenu {
private ArrayList<MenuItem> menuItems;
public OrderMenu(){
menuItems.add(new Pizza("Margherita", 50));
menuItems.add(new Pizza("Hawaii", 55));
menuItems.add(new Pizza("Marinara", 70));
menuItems.add(new Pizza("Meat Lovers", 70));
menuItems.add(new Pizza("Calzone", 60));
menuItems.add(new Burger("Burger", 60));
menuItems.add(new Burger("Cheeseburger", 65));
menuItems.add(new Burger("Baconburger", 60));
menuItems.add(new Soda("Coca cola", 25));
menuItems.add(new Soda("Coca cola light", 25));
menuItems.add(new Soda("Fanta", 25));
menuItems.add(new Soda("Faxe kondi", 25));
}
1 ответ
Вы не совсем ясно... но я думаю, что вы хотите поместить эту информацию ArrayList в некоторые таблицы / столбцы.
Вы можете использовать ObservableList, чтобы проверить все изменения в ваших данных:
private ObservableList<MenuItem> menuItems = FXCollections.observableArrayList();
Вы можете установить некоторые TableView и TableColumns в вашем контроллере следующим образом:
@FXML
private TableView<MenuItem> menuTable;
@FXML
private TableColumn<MenuItem, String> nameColumn;
@FXML
private TableColumn<MenuItem, String> priceColumn;
Затем в том же контроллере установите столбцы при инициализации контроллера:
@FXML
private void initialize() {
nameColumn.setCellValueFactory(cellData ->
cellData.getValue().getName());
priceColumn.setCellValueFactory(cellData ->
cellData.getValue().getPrice());
}
И затем, из вашего основного класса, когда вы устанавливаете mainApp на этот контроллер, вы можете установить все элементы в вашем списке на эту таблицу:
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
menuTable.setItems(menuItems);
}
Надеюсь, что это поможет вам, вот вам полный пример этого: