1

NetBeans IDEを使用したデスクトップアプリケーションがあります。このアプリケーションには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);
    }

}

このコードは、検索結果をデータモデルクラスに渡します

private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
    try {

        searchField = searchTextField.getText();
        if(!searchField.isEmpty())
        {                
       matrix = dbs.searchDatabase(searchField + "*");
       myModel.setDataList(matrix);

        }

    } catch (CorruptIndexException ex) {
        Logger.getLogger(GNSSJFrame.class.getName()).log(Level.SEVERE, null, ex);
    } catch (LockObtainFailedException ex) {
        Logger.getLogger(GNSSJFrame.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException | ParseException ex) {
        Logger.getLogger(GNSSJFrame.class.getName()).log(Level.SEVERE, null, ex);
    }             
}
4

1 に答える 1

5

テーブルモデルがこのようになっている場合、

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();
}  
}

次に、テーブルモデルインスタンスを使用して、新しいデータをリストに設定します。

 allTableModel.setTableData(/* Set new search results to the list.*/);
于 2013-03-16T14:23:49.090 に答える