有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案