如何在Jframe仍然可见的情况下每隔5秒自动刷新Jpanel或Jtable?所以当我更新数据库时,Table的内容也会更新
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();
}
这是对的吗?
答案 0 :(得分:1)
使用挥杆计时器。在计时器的动作侦听器中,检查数据库是否已更改。如果有,则启动一个新线程将数据库加载到表中。
答案 1 :(得分:-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();
} }