2015-02-07 47 views
1

我在做一个使用tableview的程序。一切都很顺利,除了某些原因,我不能让Integer值填充到表中。下面是我在主程序中的代码,当我运行程序时,字符串和双精度填充,但整数不。在我的产品类中,sku 的一个int。不确定有什么不对,寻找一些见解!TableColumn not populating Integer values

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

基本上,我创建了一个tableview类型的产品。从发票(这是产品的数组列表)中创建可观察列表,然后创建列并将它们添加到tableview中。描述和价格都填充很好,但不是SKU(整数)。

这是我的产品分类。

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

您是否已验证分配给ol1字段的值,此处为'ObservableList ol1 = listGen(invoice);'? – OlgaMaciaszek 2015-02-08 00:40:59

+0

是的,这是listGen()的代码; 'public ObservableList listGen(Invoice i){ ObservableList temp = FXCollections.observableArrayList();对于(int p = 0; p Erd 2015-02-08 01:20:15

回答

1

嗯,我挖了,我挖了,我挖了,试了一切后,我终于得到它的工作。这是代码。

TableColumn<Product, Integer> colItemNum = new TableColumn<>("Item#"); 
colItemNum.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getSKU()).asObject()); 

不太确定这是否是正确的做法,但现在我要滚动它。