传递Observable列表并将其分配给Object时出现问题



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

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

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

最新更新