显式地编写一个类,用于在JTable Swing中插入数据



在我的应用程序中,我编写了一个类,用于将数据插入JTable。

App有两个实体1:类别2:产品

对于类别,我已经编写了这个类。当我想在JTable中显示数据时,我根据情况调用这个类中的任何方法。

public class InsertDataToTable {
public void insertCategoriesToTable(JTable tableObject,ArrayList<CategoryEntity> getCategories) {
    DefaultTableModel model = (DefaultTableModel) categoryTable.getModel();
    model.setRowCount(0);
    for (CategoryEntity category : getCategories) {
        int id = category.getId();
        String categoryName = category.getCategoryName();
        model.insertRow(categoryTable.getRowCount(), new Object[]{id, categoryName});
    }
}
public void insertSingleCategory(JTable tableObject,CategoryEntity category){
    DefaultTableModel model = (DefaultTableModel) categoryTable.getModel();
    model.setRowCount(0);     
    int id=category.getId();
    String categoryName=category.getCategoryName(); 
    model.insertRow(categoryTable.getRowCount(), new Object[]{id, categoryName});
}
}

现在我想让这个类通用,这样我就可以传递类别对象或产品对象和它插入数据到表。

我的困惑在

public void insertCategoriesToTable(JTable tableObject,ArrayList<CategoryEntity> getCategories)

我应该传递什么来代替ArrayList,以便我可以调用两个实体(类别和产品)的两个方法

我不想为Product Entity编写相同的类,只是做了一些改动。

你可以考虑写一个自定义的TableModel实现,允许你使用领域对象,CategoryProduct或任何你需要的实体。

看一下这些话题:

  • 使用多个自定义表模型,避免重复代码
  • Rob Camick的行表模型

通过这种方式,您可以在没有任何其他类的情况下直接向TableModel添加/删除/更新域对象:表模型所附加的JTable将自动在TableModelEvent上重新绘制。

即使你坚持写一个特定的类来做插入,它也可以像这样,其中T是你想要插入到表模型中的实体的类型(虽然没有太多好处):

public class InsertDataToTable {
    public static <T> void insertToTable(JTable table, List<T> domainObjects) {
        DataObjectTableModel<T> model = (DataObjectTableModel<T>) table.getModel();
        model.clearTableModelData();
        for (T domainObject : domainObject) {
           model.addDataObject(domainObject);
        }
    }
    public static <T> void insertSingleObject(JTable table, T domainObject){
        DataObjectTableModel<T> model = (DataObjectTableModel<T>) table.getModel();
        model.clearTableModelData();
        model.addDataObject(domainObject);
    }
}

最新更新