java如何在单击JButton后刷新JTable
我有一个应用程序,它从数据库中获取一些数据,并将其显示在JTable
中。一切正常,但我希望我的表在单击JButton
后刷新。我的意思是,如果我在JTable中编写smth,在单击JButton之后,应用程序将再次与数据库连接,获取数据并正确显示。我试图将ActionListener添加到JButton,但我不知道应该在actionPerformed()方法中编写什么
这是我的代码:
public class App extends JFrame implements ActionListener{
protected JButton button;
public App() {
Vector<Object> columnNames = new Vector<Object>();
Vector<Object> data = new Vector<Object>();
button = new JButton("Refresh");
button.addActionListener(this);
try
{
...
String query = "Select count(distinct country) sum from customers";
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery(query);
query = "SELECT * from country";
rs = stmt.executeQuery(query);
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
for (int i = 1; i <= columns; i++)
{
columnNames.addElement(md.getColumnName(i));
}
while (rs.next())
{
Vector<Object> row = new Vector<Object>(columns);
for (int i = 1; i <= columns; i++)
{
row.addElement(rs.getObject(i) );
}
data.addElement(row);
}
rs.close();
stmt.close();
c.close();
}
catch(Exception e)
{
System.out.println(e);
}
DefaultTableModel model = new DefaultTableModel(data, columnNames)
{
@Override
public Class getColumnClass(int column)
{
for (int row = 0; row < getRowCount(); row++)
{
Object o = getValueAt(row, column);
if (o != null)
{
return o.getClass();
}
}
return Object.class;
}
};
JTable table = new JTable(model);
...
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane);
getContentPane().add(button, BorderLayout.SOUTH);
button.addActionListener(this);
}
public static void main(String[] args)
{
App frame = new App();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
frame.setSize(250,300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
}
}
共 (0) 个答案