Как разделить содержимое 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);
    }

Надеюсь, что это поможет вам, вот вам полный пример этого:

https://code.makery.ch/library/javafx-tutorial/part2/

Другие вопросы по тегам