Попытка получить предметы из массива для отображения в сетке - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь показать моего arraylist в сетке, но по какой-то причине я не могу заставить его показать.У меня есть основной класс, а также класс OrderMenu, в котором содержится мой массив.Я предпочитаю, чтобы arraylist показывался в сетке, потому что я пытаюсь создать систему заказа пиццы, и с сеткой мне легче работать.Предпочтительно это будет сетка с 12 строками по строке для каждого элемента в массиве и двумя столбцами: один для имени и один для цены.

Надеюсь, что вы, ребята, можете помочь.

public class PizzaOrderingSystem extends Application {  

private OrderMenu menu;
public ArrayList<MenuItem> menuItems;
private GridPane grid;
private BorderPane border;

//Creating Stage and layout for Stage
@Override
public void start(Stage stage) {

    stage.setTitle("Pizza Ordering System");
    stage.setWidth(600);
    stage.setHeight(600);

    this.menu.menuItems.size();

    int numRows = 2;
    int numColumns = 12;

    for (int i = 0; i < numColumns; i++) {
    ColumnConstraints cc = new ColumnConstraints(40);
    cc.setPercentWidth(80);
    cc.setHalignment(HPos.CENTER);
    grid.getColumnConstraints().add(cc);

    for (int row = 0; row < numRows; row++) {
    RowConstraints rc = new RowConstraints(40);
    rc.setPercentHeight(80);
    rc.setValignment(VPos.CENTER);
    grid.getRowConstraints().add(rc);            }

    }   

    border.setCenter(grid);

    stage.setTitle("Pizza Ordering System");
    stage.setWidth(600);
    stage.setHeight(600);

    //Attacing borderPane to scene
    stage.setScene(new Scene(border));
    stage.getScene();
    stage.show();
    }

     public static void main(String[] args) {
    launch(args);
}  
}      

public class OrderMenu {


public 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 голосов
/ 06 декабря 2018

Глядя на ваш код, я не вижу, где вы пытаетесь использовать элементы меню, которые вы создаете в своем классе OrderMenu.Я не думаю, что вы имеете в виду, что они являются элементами меню javafx.Кроме того, вы, кажется, не создаете экземпляры своих личных полей, поэтому я предполагаю, что все они просто равны нулю, когда вы пытаетесь их использовать.

Вот упрощение того, что у вас есть, которое отображает список пиццы и ценына сетке.Я ничего не добавил в размер приложения, поэтому оно будет выглядеть немного сжатым.

Основное приложение

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class PizzaOrderingSystem extends Application {  

    @Override
    public void start(Stage stage) {

        GridPane grid = new GridPane();

        int row = 0;
        for (OrderItem item : OrderMenu.getItems()) {
            grid.add(new Label(item.getName()), 0, row);
            grid.add(new Label(String.valueOf(item.getPrice())), 1, row);
            row++;
        }

        BorderPane borderPane = new BorderPane();
        borderPane.setCenter(grid);

        stage.setTitle("Pizza Ordering System");

        stage.setScene(new Scene(borderPane));

        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }  
}      

Интерфейс для OrderItem

public interface OrderItem {

    public String getName();
    public int getPrice();
}

класс Pizza, который реализует OrderItem

public class Pizza implements OrderItem {

    private String name;
    private int price;

    public Pizza(String name, int price) {
        this.setName(name);
        this.setPrice(price);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

}

и OrderMenu со статическим методом для получения списка элементов заказа.

import java.util.ArrayList;
import java.util.List;

public class OrderMenu {

    public static List<OrderItem> getItems(){
        List<OrderItem> menuItems = new ArrayList<>();

        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));

        return menuItems;
    }

}
...