【问题标题】:TableColumn not populating Integer valuesTableColumn 未填充整数值
【发布时间】:2015-02-07 21:11:41
【问题描述】:

我正在制作一个使用 tableview 的程序。一切都很顺利,除了由于某种原因我无法将整数值填充到表中。下面是我在主程序中的代码,当我运行程序时会填充 String 和 Double,但 Integer 不会。在我的 Product 类中,sku 一个 int。不太清楚哪里出了问题,正在寻找一些见解!

    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。描述和价格都很好,但不是 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 invoice = new Invoice(new Customer());
    invoice.add(new Product("Hammer", 30042, 7.95));
    invoice.add(new Product("Drill", 30041, 59.99));

【问题讨论】:

  • 您是否验证了分配给此处ObservableList&lt;Product&gt; ol1 = listGen(invoice); ol1 字段的值?
  • 是的,这是 listGen() 的代码; public ObservableList&lt;Product&gt; listGen(Invoice i) { ObservableList&lt;Product&gt; temp = FXCollections.observableArrayList(); for (int p = 0; p &lt; i.getArray().size(); p++) temp.add(i.getArray().get(p)); return temp; }

标签: java tableview tablecolumn


【解决方案1】:

好吧,我挖,挖,挖,在尝试了一切之后,我终于让它工作了。这是代码。

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

不确定这是否是正确的做法,但现在我会继续使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    相关资源
    最近更新 更多