明确编写用于将数据插入JTable Swing的类

时间:2015-07-17 18:44:08

标签: java swing arraylist jtable defaulttablemodel

在我的应用程序中,我编写了一个将数据插入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});
}

}

现在我想把这个类设为General,以便我可以传递类别对象或产品对象,并将数据插入表格。

我的困惑在于

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

我应该传递什么而不是ArrayList,以便我可以为两个实体(类别和产品)调用两种方法。

我不想编写相同的类,只需更改产品实体。

1 个答案:

答案 0 :(得分:2)

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

看看这些主题:

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

即使你坚持写一个特定的类来进行插入,也可能是这样的,TableModelEvent是你想要进入你的表模型的实体的类型(虽然没有太多的好处):

T