Javafx 如何划分ArrayList的内容<;字符串,int>;分成两列

Javafx 如何划分ArrayList的内容<;字符串,int>;分成两列,javafx,arraylist,gridpane,Javafx,Arraylist,Gridpane,我有你在下面看到的这个数组列表。我希望将我的ArrayList分为三列,一列显示项目的“类别”,如比萨饼或汉堡,一列显示名称,如玛格丽塔,另一列显示价格。此外,我希望每个项目都有一行,所以有12行。我曾尝试将ArrayList的内容输入到GridPane中,但根本无法实现 public abstract class MenuItem { private String name; private double price; public MenuItem(String name, double

我有你在下面看到的这个数组列表。我希望将我的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));  

}
公共抽象类菜单项{
私有字符串名称;
私人双价;
公共菜单项(字符串名称,双倍价格){
this.name=名称;
这个价格=价格;
}
公共void集合名(字符串名){
}
公共字符串getName(){
返回名称;
}
公共定价(双倍价格){
}
公开双价{
退货价格;
}
公共类命令菜单{
私有ArrayList菜单项;
公共秩序菜单(){
菜单项添加(新比萨饼(“玛格丽塔”,50));
menuItems.add(新比萨饼(“夏威夷”,55));
menuItems.添加(新比萨饼(“Marinara”,70));
menuItems.add(新比萨饼(“肉食爱好者”,70));
菜单项添加(新比萨饼(“Calzone”,60));
菜单项添加(新汉堡(“汉堡”,60));
menuItems.add(新汉堡(“奶酪汉堡”,65));
menuItems.add(新汉堡(“Baconburger”,60));
添加(新苏打水(“可口可乐”,25));
添加(新苏打水(“可口可乐清淡”,25));
添加(新苏打水(“芬达”,25));
menuItems.添加(新苏打(“传真kondi”,25));
}

您不太清楚……但我想您应该将ArrayList信息放入一些表/列中

您可以使用ObservableList检查数据中的所有更改:

private ObservableList<MenuItem> menuItems = FXCollections.observableArrayList();
然后,在主类中,将mainApp设置为此控制器时,可以将列表中的所有项目设置为此表:

public void setMainApp(MainApp mainApp) {
        this.mainApp = mainApp;
        menuTable.setItems(menuItems);
    }
希望这能对您有所帮助,这里有一个完整的例子:


TableView更适合您所描述的用途。我已经将其制作成TableView,我只是对外观不太满意,所以我希望有另一种选择:)外观和控件不耦合。
TableView
是最符合逻辑的控件。如果您想自定义它,可以很容易地完成。查看JavaDocs或其他问题如果您找不到一种方法来做您想做的事情,请询问有关自定义
TableView
外观的问题。
    @FXML
    private void initialize() {
        nameColumn.setCellValueFactory(cellData -> 
          cellData.getValue().getName());
        priceColumn.setCellValueFactory(cellData -> 
          cellData.getValue().getPrice());
    }
public void setMainApp(MainApp mainApp) {
        this.mainApp = mainApp;
        menuTable.setItems(menuItems);
    }