将产品存储在TreeSet中并在JTable中打印内容

我正在尝试创建一个GUI,它允许用户通过使用TreeSet在GUI中引入和删除产品。 在选择要执行的操作之前,用户指定产品名称和数量:添加产品或删除产品。

我的问题是:如何打印每次用户添加或删除产品时可以不断更新的JTable?

这就是我到目前为止所拥有的。 您还将看到我计划显示的表格内容。 我不知道我是否正确使用TreeSet,但我会感激任何帮助。

public class Warehouse implements Serializable { private int nrOfProducts = 0; private TreeSet products = new TreeSet(); private JTable productsTable; private Object[][] entries = new Object[100][10]; private String[] columnName = {"Product name", "Price", "In stock", "Understock", "Overstock"}; public Warehouse() { } public Warehouse(Product product, int nrOfProducts) { this.nrOfProducts = 0; this.products = new TreeSet(); } public void addProduct(Product newProduct) { products.add(newProduct); nrOfProducts++; } public void removeProduct(Product product) { products.remove(product); nrOfProducts--; } public int getNrOfProducts() { return nrOfProducts; } public void initFile() { try { FileOutputStream fos = new FileOutputStream("products.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(products); oos.close(); } catch(Exception exc) { exc.printStackTrace(); } } public void readFile() { try { FileInputStream fis = new FileInputStream("products.ser"); ObjectInputStream ois = new ObjectInputStream(fis); Product prod = (Product) ois.readObject(); while (prod != null) addProduct(prod); ois.close(); } catch(Exception exc) { exc.printStackTrace(); } } public void printProducts() { for (Product p: products) { // here's where I got stuck } } } 

我还会在这里附上Product类:

 public class Product implements Comparable { String productName; private int price; private int stock; private boolean understock; private boolean overstock; public Product() { } public Product(String productName, int price, boolean understock, boolean overstock, int stock) { this.productName = productName; this.price = price; this.understock = understock; this.overstock = overstock; this.stock = stock; if (stock > 15) { this.overstock = true; this.understock = false; } else if (stock < 3) { this.overstock = false; this.understock = true; } else { this.overstock = false; this.understock = false; } } public int compareTo(Object obj) { Product prod = (Product) obj; return (productName.compareTo(prod.productName)); } } 

扩展AbstractTableModel ,如下所示。 在这种情况下,您可以在getValueAt() 实现中访问TreeSet ,如此处所示的Map 。 因为TreeSet实现了SortedSet ,所以toArray()方法将根据您的Comparable实现返回Product的排序数组。