TableColumn 不填充整数值
TableColumn not populating Integer values
我正在制作一个使用 table 视图的程序。一切都进行得很顺利,除了某些原因,我无法将整数值填充到 table 中。下面是我在主程序中的代码,当我 运行 程序时,String 和 Double 会填充,但 Integer 不会。在我的产品 class 中,sku 是 一个整数。不太确定哪里出了问题,寻求一些见解!
TableView<Product> tvOrderDetails = new TableView<>();
ObservableList<Product> ol1 = listGen(invoice);
tvOrderDetails.setItems(ol1);
TableColumn<Product, Integer> colItemNum = new TableColumn<>("Item#");
colItemNum.setCellValueFactory(new PropertyValueFactory("sku"));
TableColumn<Product, String> colDesc = new TableColumn<>("Description");
colDesc.setCellValueFactory(new PropertyValueFactory("name"));
TableColumn<Product, Double> colPrice = new TableColumn<>("Price");
colPrice.setCellValueFactory(new PropertyValueFactory("price"));
tvOrderDetails.getColumns().setAll(colItemNum, colDesc, colPrice);
基本上,我创建了一个 table 类型产品的视图。从发票中创建一个可观察的列表(这是一个产品数组列表),然后创建列并将它们添加到 table 视图。描述和价格都很好,但不是 sku(整数)。
这是我的产品Class。
public class Product {
private String name;
private int sku;
private double price;
public String getName() { return name; }
public int getSKU() { return sku; }
public double getPrice() { return price; }
public void setName(String n) { name = n; }
public void setSKU(int s) { sku = s; }
public void setPrice(double p) { price = p; }
Product(String n, int s, double p) {
name = n;
sku = s;
price = p;
}
@Override
public String toString() {
return "\nName: " + name + "\nSKU: " + sku + "\nPrice" + price;
}
public boolean equals(Product two) {
if (this.name.equals(two.getName()) && this.sku == two.getSKU() && this.price == two.getPrice())
return true;
else
return false;
}
}
这是 listGen()
public ObservableList<Product> listGen(Invoice i) {
ObservableList<Product> temp = FXCollections.observableArrayList();
for (int p = 0; p < i.getArray().size(); p++)
temp.add(i.getArray().get(p));
return temp;
}
这是发票对象并添加了产品。
Invoice invoice = new Invoice(new Customer());
invoice.add(new Product("Hammer", 30042, 7.95));
invoice.add(new Product("Drill", 30041, 59.99));
好吧,我挖了,挖了又挖,在尝试了一切之后我终于让它工作了。这是代码。
TableColumn<Product, Integer> colItemNum = new TableColumn<>("Item#");
colItemNum.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getSKU()).asObject());
不太确定这是否是正确的做法,但现在我要顺其自然。
我正在制作一个使用 table 视图的程序。一切都进行得很顺利,除了某些原因,我无法将整数值填充到 table 中。下面是我在主程序中的代码,当我 运行 程序时,String 和 Double 会填充,但 Integer 不会。在我的产品 class 中,sku 是 一个整数。不太确定哪里出了问题,寻求一些见解!
TableView<Product> tvOrderDetails = new TableView<>();
ObservableList<Product> ol1 = listGen(invoice);
tvOrderDetails.setItems(ol1);
TableColumn<Product, Integer> colItemNum = new TableColumn<>("Item#");
colItemNum.setCellValueFactory(new PropertyValueFactory("sku"));
TableColumn<Product, String> colDesc = new TableColumn<>("Description");
colDesc.setCellValueFactory(new PropertyValueFactory("name"));
TableColumn<Product, Double> colPrice = new TableColumn<>("Price");
colPrice.setCellValueFactory(new PropertyValueFactory("price"));
tvOrderDetails.getColumns().setAll(colItemNum, colDesc, colPrice);
基本上,我创建了一个 table 类型产品的视图。从发票中创建一个可观察的列表(这是一个产品数组列表),然后创建列并将它们添加到 table 视图。描述和价格都很好,但不是 sku(整数)。
这是我的产品Class。
public class Product {
private String name;
private int sku;
private double price;
public String getName() { return name; }
public int getSKU() { return sku; }
public double getPrice() { return price; }
public void setName(String n) { name = n; }
public void setSKU(int s) { sku = s; }
public void setPrice(double p) { price = p; }
Product(String n, int s, double p) {
name = n;
sku = s;
price = p;
}
@Override
public String toString() {
return "\nName: " + name + "\nSKU: " + sku + "\nPrice" + price;
}
public boolean equals(Product two) {
if (this.name.equals(two.getName()) && this.sku == two.getSKU() && this.price == two.getPrice())
return true;
else
return false;
}
}
这是 listGen()
public ObservableList<Product> listGen(Invoice i) {
ObservableList<Product> temp = FXCollections.observableArrayList();
for (int p = 0; p < i.getArray().size(); p++)
temp.add(i.getArray().get(p));
return temp;
}
这是发票对象并添加了产品。
Invoice invoice = new Invoice(new Customer());
invoice.add(new Product("Hammer", 30042, 7.95));
invoice.add(new Product("Drill", 30041, 59.99));
好吧,我挖了,挖了又挖,在尝试了一切之后我终于让它工作了。这是代码。
TableColumn<Product, Integer> colItemNum = new TableColumn<>("Item#");
colItemNum.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getSKU()).asObject());
不太确定这是否是正确的做法,但现在我要顺其自然。