Как получить содержимое ArrayList для отображения в графическом интерфейсе JavaFX - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь создать систему заказа пиццы в JavaFx, используя TableView в графическом интерфейсе.Я наконец заставил его работать, поэтому я хотел поделиться своим кодом, если у кого-то еще есть проблемы с отображением содержимого ArrayList.Теперь я сделаю макет, чтобы TableView соответствовал сцене.Если у кого-то есть какие-либо предложения по этому поводу, не стесняйтесь поделиться :)

  package pizzaorderingsystem;

  import javafx.application.Application;
  import javafx.collections.FXCollections;
  import javafx.collections.ObservableList;
  import javafx.scene.Scene;
  import javafx.scene.control.TableColumn;
  import javafx.scene.control.TableView;
  import javafx.scene.control.cell.PropertyValueFactory;
  import javafx.scene.layout.VBox;
  import javafx.stage.Stage;

  public class PizzaOrderingSystem extends Application {

    private Stage window;
    private TableView<MenuItem> tableView;

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

  @Override
  public void start(Stage primaryStage) throws Exception {

    window = primaryStage;
    window.setTitle("Pizza ordering system");

    //Name column
    TableColumn<MenuItem, String> nameColumn = new TableColumn<>("Name"); 
    nameColumn.setMinWidth(200);
    nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));

    //Price column
    TableColumn<MenuItem, Double> priceColumn = new TableColumn<>("Price"); 
    priceColumn.setMinWidth(100);
    priceColumn.setCellValueFactory(new PropertyValueFactory<>("price"));

    tableView = new TableView<>();
    tableView.setItems(getMenuItem());
    tableView.getColumns().addAll(nameColumn, priceColumn);

    VBox vBox = new VBox();
    vBox.getChildren().addAll(tableView);


    Scene scene = new Scene(vBox);
    window.setScene(scene);
    window.show();

    }

  public ObservableList<MenuItem> getMenuItem(){
    ObservableList<MenuItem> menuItems = 
  FXCollections.observableArrayList();

    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("Calazone", 60));

    menuItems.add(new Burger("Burger", 60));
    menuItems.add(new Burger("Cheeseburger", 65));
    menuItems.add(new Burger("Baconburger", 65));

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

  }
  }

Ответы [ 2 ]

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

Попробуйте:

import java.util.ArrayList;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class PizzaOrderingSystem extends Application {

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

    @Override
    public void start(Stage window) throws Exception {

        window.setTitle("Pizza ordering system");
        MenuBar menuBar = new MenuBar();
        Menu orderMenu = new Menu("Order");
        orderMenu.getItems().addAll(new OrderMenu().getmenuItems());
        menuBar.getMenus().add(orderMenu);
        VBox vBox = new VBox(menuBar);
        Scene scene = new Scene(vBox, 300, 300);
        window.setScene(scene);
        window.show();
    }
}

class OrderMenu {

    public ArrayList<MenuItem> menuItems;

    public OrderMenu (){

        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("Calazone", 60));
    }

    public ArrayList<MenuItem> getmenuItems() {
        return menuItems;
    }
}

class Pizza extends MenuItem {

    Pizza(String name, int cost) {
        setText(name +" $"+cost);
        setOnAction(e-> System.out.println(name+ " piza ordered"));
    }
}

(публикация mcve , как эта, делает помощь намного быстрее и проще)

0 голосов
/ 02 декабря 2018
ArrayList<MenuItem> menuItems = new OrderMenu().getmenuItems();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...