Java JTable更新或刷新

Java JTable更新或刷新,java,swing,Java,Swing,我有一个创建表的类: import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.util.*; public class ItemsTable extends JPanel { ArrayList < Item > items = new ArrayList < Item > (); ItemsTable(ArrayList < Item >

我有一个创建表的类:

import javax.swing.*;
import javax.swing.table.*;

import java.awt.*;
import java.util.*;

public class ItemsTable extends JPanel {

  ArrayList < Item > items = new ArrayList < Item > ();

  ItemsTable(ArrayList < Item > items, Integer choice, String search) {
    super(new GridLayout(1, 0));
    this.items = items;

    String[] columnNames = {
      "No.",
      "Title",
      "Description",
      "Keyword",
      "User ID",
      "Start time",
      "Close time",
      "Reserve Price",
      "ID code"
    };

    DefaultTableModel model = new DefaultTableModel(0, 0);
    JTable table = new JTable();
    model.setColumnIdentifiers(columnNames);
    table.setModel(model);

    int k = 0;

    for (Item i: items) {
      if ((choice == 0 && i.getUserID().equals(search)) || (choice == 1 && i.getKeyword().equals(search)) || (choice == 2 && i.getIdCode().equals(search))) {
        k++;
        Object[] newRow = {
          k, i.getTitle(), i.getDescription(), i.getKeyword(), i.getUserID(), i.getStartTime(), i.getCloseTime(), i.getReservePrice(), i.getIdCode()
        };
        model.addRow(newRow);
      }
    }

    table.setPreferredScrollableViewportSize(new Dimension(500, 70));
    table.setFillsViewportHeight(true);

    JScrollPane scrollPane = new JScrollPane(table);

    add(scrollPane);
  }

}

但是在我搜索一次之后,下次我想搜索表的时候不会改变。如何更新或刷新它?

不要创建ItemsTable的新实例,而是创建一个实例(将其添加到您的ui中),并提供setter来更改ItemsTable的状态……您可能还想看看
searchButton.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent arg0) {
    Integer choice = searchBox.getSelectedIndex();
    System.out.println(choice);
    ItemsTable table = new ItemsTable(items, choice, searchField.getText());
    //searchPanel.add(table, BorderLayout.SOUTH);
  }
});