将产品存储在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
的排序数组。
- Spring Security 3的AuthenticationSuccessHandler示例
- Hibernate条件返回页面和rowcount
- 包含其他注释的注释成员?
- “在注释ConcurrentHashMap时,在hibernate中非法尝试将非集合映射为@OneToMany,@ ManyToMany或@CollectionOfElements”
- 无法初始化类com.sun.xml.internal.ws.fault.SOAPFaultBuilder
- Java HTTP推送(消息传递)的最佳解决方案
- Java:JITC的反映通胀是什么?
- JavaFX在FXML文档中编辑WebView
- 如何使用API 3.1.1在Maven插件中使用Aether(eclipse)?