-1

我正在学习 Java/JavaFX 的这个项目即将结束,它是一个库存管理系统,在系统中,我应该能够创建一个产品并将另一个 ObservableList 中的部件分配给该 productID。我遇到的问题是它会让我在 GUI 中添加部件并将其发送到内存,但它不会将它发送到我也尝试附加部件的特定 ID。Product 类和控制器的代码如下:

package Model;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

public class Product {

    private static ObservableList<Part> part = FXCollections.observableArrayList();
    private int productID;
    private String name;
    private double price;
    private int inStock;
    private int min;
    private int max;

    //Product constructor
    public Product(int productID, String name, double price, int inStock, int min, int max) {
        this.productID = productID;
        this.name = name;
        this.price = price;
        this.inStock = inStock;
        this.min = min;
        this.max = max;
    }
    public static ObservableList<Part> getPart() {
        return Product.part;
    }

    public void setPart(ObservableList<Part> part) {
        Product.part = part;
    }
}
package ViewController;

import Model.Inventory;
import Model.Part;
import Model.Product;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;
import java.io.IOException;
import java.net.URL;
import java.util.Optional;
import java.util.ResourceBundle;

public class AddProduct implements Initializable {
    public Button addProductSearchButton;
    public Button addProductAddButton;
    public Button addProductCancelButton;
    public Button addProductSaveButton;
    public Button addProductDeleteButton;
    public TextField productIDTxtbox;
    public TextField productNameTxtbox;
    public TextField productInvTxtbox;
    public TextField productMaxTxtField;
    public TextField productPriceTxtbox;
    public TextField productMinTxtbox;
    public TextField productSearchTxtbox;
    public TableView<Part> partSelectionTableview;
    public TableColumn<Part, Integer> partSelectionIDColumn;
    public TableColumn<Part, String> partSelectionNameColumn;
    public TableColumn<Part, Integer> partSelectionInvColumn;
    public TableColumn<Part, Double> partSelectionPriceColumn;
    public TableView<Part> productPartsTableview;
    public TableColumn<Part, Integer> productPartIDColumn;
    public TableColumn<Part, String> productPartNameColumn;
    public TableColumn<Part, Integer> productPartInvColumn;
    public TableColumn<Part, Double> productPartPriceColumn;

    private ObservableList<Part> availablePart = FXCollections.observableArrayList();


    public void initialize(URL url, ResourceBundle rb){
        partSelectionTableview.setItems(Inventory.getAllPart());
        partSelectionIDColumn.setCellValueFactory(new PropertyValueFactory<>("partID"));
        partSelectionNameColumn.setCellValueFactory(new PropertyValueFactory<>("partName"));
        partSelectionInvColumn.setCellValueFactory((new PropertyValueFactory<>("partInStock")));
        partSelectionPriceColumn.setCellValueFactory(new PropertyValueFactory<>("partPrice"));
        productPartsTableview.setItems(availablePart);
        productPartIDColumn.setCellValueFactory(new PropertyValueFactory<>("partID"));
        productPartNameColumn.setCellValueFactory(new PropertyValueFactory<>("partName"));
        productPartInvColumn.setCellValueFactory(new PropertyValueFactory<>("partInStock"));
        productPartPriceColumn.setCellValueFactory(new PropertyValueFactory<>("partPrice")

    public void addProductSaveButton(MouseEvent mouseEvent) throws IOException {
        Product productadd = new Product(0,"",0.0,0,0,0);
        if (productIDTxtbox.getText().isEmpty()){
            productadd.setProductID(Inventory.getProductIDCount());
        }
        if (!productNameTxtbox.getText().isEmpty()){
            productadd.setName(productNameTxtbox.getText());
        }
        if (!productPriceTxtbox.getText().isEmpty()){
            productadd.setPrice(Double.parseDouble(productPriceTxtbox.getText()));
        }
        if (!productInvTxtbox.getText().isEmpty()){
            productadd.setInStock(Integer.parseInt(productInvTxtbox.getText()));
        }
        if (!productMinTxtbox.getText().isEmpty()){
            productadd.setMin(Integer.parseInt(productMinTxtbox.getText()));
        }
        if (!productMaxTxtField.getText().isEmpty()){
            productadd.setMax(Integer.parseInt(productMaxTxtField.getText()));
        }
        if (!availablePart.isEmpty()) {
            productadd.setPart(availablePart);
        }

        if(availablePart.isEmpty()){
            Alert alert = new Alert(Alert.AlertType.INFORMATION);
            alert.setHeaderText("All products must contain at least 1 Part!");
            alert.showAndWait();
        }
        else {
            Inventory.addProduct(productadd);
            Parent addProductSave = FXMLLoader.load(getClass().getResource("MainScreen.fxml"));
            Scene scene = new Scene(addProductSave);
            Stage window = (Stage) ((Node) mouseEvent.getSource()).getScene().getWindow();
            window.setScene(scene);
            window.show();
        }
}
4

1 回答 1

0

发现问题是尝试使用非静态方法调用静态方法

于 2020-08-02T06:51:55.267 回答