单击客户端IP地址个数单元格,弹出新窗体,表格内的客户端地址与访问数五秒一刷新
一:用Timer作为定时器,五秒一刷新,关闭窗口,定时器随之关闭。
public TimerTask runTimes() {
TimerTask task = new TimerTask() {
public synchronized void run() {
// TODO Auto-generated method stub
System.out.println("刷新启动");
refreshIpInfoTable();//刷新表格中数据的方法
System.out.println("刷新停止");
}
};
return task;
}
/**
* 从当前时间立刻发起定时器
* @param time 时间间隔
* @return
* @throws ParseException
*/
public Timer startTime(int time) throws ParseException {
Timer timer = new Timer();
timer.schedule(runTimes(), new Date(), time);
return timer;
}
/**
* 停止定时器
* @param timer
*/
public void stopTime(Timer timer) {
timer.cancel();
}
服务信息表格的点击监听事件内:
点击单元格,启动定时刷新:
try {
t1 = startTime(5000);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
关闭窗体,t1定时器关闭:
JFrame j=new JFrame();
JDialog jd= new JDialog(j,"客户端IP地址和访问数:",true);
jd.addWindowListener(new WindowAdapter() {
//点击关闭窗体时执行此方法
public void windowClosing(java.awt.event.WindowEvent e) {
stopTime(t1);//关闭定时器
};
});
二:用Thread作为定时器,五秒一刷新,关闭窗口,定时器随之关闭。
(1)设置全局的运行标识符
private volatile boolean isRun = true;
(2)启动线程
Runnable runnable = new Runnable() {
@Override
public void run() {
while (isRun) {
System.out.println("刷新开始");
refreshIpInfoTable();
System.out.println("刷新结束");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);//线程创建
thread.start();//线程启动
(3)窗口关闭,线程终止
JFrame j=new JFrame();
JDialog jd= new JDialog(j,"客户端IP地址和访问数:",true);
jd.addWindowListener(new WindowAdapter() {
//点击关闭窗体时执行此方法
public void windowClosing(java.awt.event.WindowEvent e) {
isRun = false; //将标识符改为false,thread关闭
};
});