0

如何在 Jframe 仍然可见时每 5 秒自动刷新一次 Jpanel 或 Jtable?这样当我更新数据库时,Jtable 的内容也会更新

public static void refreshPanelItemTable(){
 int delay = 2000; //milliseconds
    ActionListener taskPerformer = new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
             MainFramePanels.itemTable.revalidate();
         }
    };
     new Timer(delay, taskPerformer).start();
}

这是正确的吗?

4

2 回答 2

1

使用摆动计时器。在计时器的操作侦听器中,检查数据库是否已更改。如果有,则启动一个新线程将数据库加载到表中。

于 2013-07-30T10:02:39.987 回答
-1

你做这件事的方式有点不对。您必须使用计时器类并刷新您的 sql 查询。您不需要刷新 jpanel。只是尝试跟随..

long delay = 15 * 1000;
LoopTask task = new LoopTask();
Timer timer = new Timer("TaskName"); 

public void start() {
    timer.cancel();
    timer = new Timer("TaskName");
    Date executionDate = new Date();
    timer.scheduleAtFixedRate(task, executionDate, delay);
}  

private class LoopTask extends TimerTask {

    public void run() {
        refreshSQL();
    }
}
DefaultTableModel dtm=null;  
Vector v=null;
public void refreshSQL() {
 try {
  dtm = (DefaultTableModel) jTable1.getModel();
            ResultSet r = DB.dbConfig.search("your sql statement");
            while (r.next()) {
                v = new Vector();
                v.add(r.getString("aa"));
                dtm.addRow(v);

            }



        } catch (Exception e) {
            e.printStackTrace();
        }  }
于 2013-07-30T10:20:56.870 回答