Java 显式编写用于将数据插入JTable Swing的类

Java 显式编写用于将数据插入JTable Swing的类,java,swing,arraylist,jtable,defaulttablemodel,Java,Swing,Arraylist,Jtable,Defaulttablemodel,在我的应用程序中,我编写了一个将数据插入JTable的类 应用程序有两个实体1:类别2:产品 对于分类,我写了这个类。当我想在JTable中显示数据时,我会根据情况调用这个类中的任何方法 public class InsertDataToTable { public void insertCategoriesToTable(JTable tableObject,ArrayList<CategoryEntity> getCategories) { DefaultTableM

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

应用程序有两个实体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});
}

}
公共类InsertDataToTable{
public void insertCategoriesToTable(JTable tableObject,ArrayList getCategories){
DefaultTableModel=(DefaultTableModel)categoryTable.getModel();
model.setRowCount(0);
for(类别实体类别:getCategories){
int id=category.getId();
String categoryName=category.getCategoryName();
insertRow(categoryTable.getRowCount(),新对象[]{id,categoryName});
}
}
公共void insertSingleCategory(JTable tableObject、CategoryEntity类别){
DefaultTableModel=(DefaultTableModel)categoryTable.getModel();
model.setRowCount(0);
int id=category.getId();
String categoryName=category.getCategoryName();
insertRow(categoryTable.getRowCount(),新对象[]{id,categoryName});
}
}
现在我想让这个类成为通用类,这样我就可以传递category对象或product对象,并将数据插入表中

我感到困惑

public void insertCategoriesToTable(JTable tableObject,ArrayList<CategoryEntity> getCategories)
public void insertCategoriesToTable(JTable table对象,ArrayList getCategories)
我应该传递什么而不是ArrayList,这样我可以为两个实体(类别和产品)调用这两个方法


< P>我不想为产品实体编写相同的类,而

您可以考虑编写一个自定义<代码> TabLimoDele[/Cord]实现,它允许您使用域对象,无论是代码>类别>代码>还是<代码>产品<代码>或您需要的任何实体。

请看以下主题:

通过这种方式,您可以直接向
TableModel
添加/删除/更新域对象,而无需任何其他类:表模型所附加到的
JTable
将在
tablemodeleevent
上自动重新绘制

即使您坚持编写一个特定的类来进行插入,也可能是这样的,
T
是您希望插入到表模型中的实体的类型(尽管没有太多好处):

公共类InsertDataToTable{
公共静态void insertToTable(JTable表,列表域对象){
DataObjectTableModel=(DataObjectTableModel)table.getModel();
model.clearTableModelData();
for(T域对象:域对象){
model.addDataObject(domainObject);
}
}
公共静态void insertSingleObject(JTable表,T domainObject){
DataObjectTableModel=(DataObjectTableModel)table.getModel();
model.clearTableModelData();
model.addDataObject(domainObject);
}
}

您正在写一个“产品对象”,但我在代码中找不到它。你这是什么意思?非常感谢,请告诉我我的DataObjectTableModel是什么,它没有导入功能。不客气
DataObjectTableModel
是您将在我包含的第一个链接中找到的类。请阅读整篇文章,你会发现它实际上就是你想要的@MuhammadDanishKhanit抛出类强制转换异常javax.swing.table.DefaultTableModel无法强制转换为app.CommonClass.DataObjectTableModel在JTable上插入任何内容之前,请确保将新的DataObjectTableModel实例设置为JTable(默认情况下,JTable的表模型为DefaultTableModel)@MuhammadDanishKhan
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);
    }
}