/ / TableColumn не заповнює значення цілого числа - java, viewview, tablecolumn

TableColumn не заповнює значення цілого числа - java, viewview, tablecolumn

Я роблю програму, яка використовує перегляд таблиці. Все проходить гладко, за винятком якихось я не можу отримати цілі числа, які слід заповнити в таблиці. Нижче наведено мій код у головній програмі, рядок String і Double заповнюється, коли я запускаю програму, але Integer не відповідає. У моєму продуктовому класі ску є інт. Не дуже впевнений, що не так, шукаючи деякого розуміння!

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

В основному я створю табличний перегляд продукту типу. Складіть спостережуваний список із рахунку-фактури (який є масивом продуктів), а потім складіть стовпці та додайте їх до перегляду таблиці. Опис та ціна містять чудово, але не ску (ціле число).

Це мій товарний клас.

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

}

Ось списокGen ()

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

Відповіді:

1 для відповіді № 1

Ну я копав, і копав, і копав, і, випробувавши все, я нарешті змусив його працювати. Ось код.

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

Не дуже впевнений, чи це правильний спосіб зробити це, але наразі я з цим пройдуся.