Как разделить содержимое ArrayListна две разные колонки - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть 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 Ответ

0 голосов
/ 03 декабря 2018

Вы не совсем ясно ... но я думаю, что вы хотите поместить эту информацию 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/

...