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