Java 替换jtable的内容

Java 替换jtable的内容,java,swing,netbeans,jtable,Java,Swing,Netbeans,Jtable,我有一个使用NetBeans IDE的swing桌面应用程序 应用程序有一个JTable,显示 来自lucene搜索操作的数据 任何时候进行新的搜索, 该表将新的搜索结果附加到 上一个搜索结果。我 希望表替换任何现有的 使用新的搜索结果搜索结果。整齐 用于刷新和显示新表格的单词 搜索结果 有什么建议吗 这是数据模型的代码片段 public class MyTableModel extends AbstractTableModel { private Vector<Vector&l

我有一个使用NetBeans IDE的swing桌面应用程序 应用程序有一个
JTable
,显示 来自lucene搜索操作的数据

任何时候进行新的搜索, 该表将新的搜索结果附加到 上一个搜索结果。我 希望表替换任何现有的 使用新的搜索结果搜索结果。整齐 用于刷新和显示新表格的单词 搜索结果

有什么建议吗

这是数据模型的代码片段

public class MyTableModel extends AbstractTableModel {

    private Vector<Vector<String>> dataList = new Vector<>();
     private String[] header = { "ID","SUBJECT","LETTTER FROM","LETTER DATE","DATE RECEIED",
                                  "REMARKS","DATE DISPATCHED","DESTINATION OFFICE"};



    public Vector<Vector<String>> getDataList() {
        return dataList;
    }

    public void setDataList(Vector<Vector<String>> dataList) {       
        this.dataList = dataList;
        fireTableDataChanged(); 
    }

    public void setHeader(String[] header) {
        this.header = header;
    }

    public String[] getHeader() {
        return header;
    }

    @Override
    public int getRowCount() {
        return dataList.size();
    }

    @Override
    public int getColumnCount() {
        return header.length;
    }

    @Override
   public String getColumnName(int col) {
    return header[col];
   }

    @Override
    public Object getValueAt(int row, int col) { 
    return dataList.get(row).get(col);
    }

}

如果您的表格模型是这样的

class AllTableModel extends AbstractTableModel {

    // Suppose this is the data list table is using,
    List<TableData> tableData = new ArrayList<TableData>();

    // Override methods goes here.

    public void setTableData(List<TableData> tableData) {
        this.tableData = tableData;
        fireTableDataChanged();
}  
}

如果您的表格模型是这样的

class AllTableModel extends AbstractTableModel {

    // Suppose this is the data list table is using,
    List<TableData> tableData = new ArrayList<TableData>();

    // Override methods goes here.

    public void setTableData(List<TableData> tableData) {
        this.tableData = tableData;
        fireTableDataChanged();
}  
}

请发布部分代码提前进行模型刷新。您使用了什么模型?请发布部分代码提前进行模型刷新。您使用了什么模型?表模型应该真正封装它,并触发相应的事件。是的,更好。我更喜欢它制作列表的防御性副本,但这是一个实现细节+1.和或随着结构的改变(关于列模型),但取决于,请注意,在数据和结构改变后,自定义渲染器和编辑器可能会消失,需要再次添加这些通知程序。如果发现错误,则在进行新搜索时,会为lucene搜索结果创建一个数组列表,通过向列表中的现有数据添加新数据来更新列表。为了修复这个错误,我使用list.clear()方法在将新数据添加到列表之前刷新所有现有数据。谢谢大家的支持suggestions@mKorbel此处不太可能发生结构更改(最有可能的是,模型每列有一个固定的项属性)和tableColumns(以及它们的自定义集属性,如大小、渲染器、编辑器)仅在structureChanged上被替换,而不是在dataChanged上被替换。只是提醒一下:-)表模型应该真正封装它,并触发适当的事件。是的,更好。我更喜欢它制作列表的防御性副本,但这是一个实现细节+1.和或随着结构的改变(关于列模型),但取决于,请注意,在数据和结构改变后,自定义渲染器和编辑器可能会消失,需要再次添加这些通知程序。如果发现错误,则在进行新搜索时,会为lucene搜索结果创建一个数组列表,通过向列表中的现有数据添加新数据来更新列表。为了修复这个错误,我使用list.clear()方法在将新数据添加到列表之前刷新所有现有数据。谢谢大家的支持suggestions@mKorbel此处不太可能发生结构更改(最有可能的是,模型每列有一个固定的项属性)和tableColumns(以及它们的自定义集属性,如大小、渲染器、编辑器)仅在structureChanged上被替换,而不是在dataChanged上被替换。只是提醒一下:-)
 allTableModel.setTableData(/* Set new search results to the list.*/);