-1

我有你在下面看到的这个 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));  

}
4

1 回答 1

0

你不是很清楚......但我想你想把那个 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/

于 2018-12-03T20:45:31.830 回答