java swing 窗口不用时定时关闭

简介:

我写了一些Java swing客户端程序,我想达到一个效果:长时间不用时自动关闭.

如何实现呢?

启动主窗口时,调用如下方法,给Frame添加监听事件:

Java代码   收藏代码
  1. private void init33() {  
  2.         this.addWindowListener(new WindowAdapter() {  
  3.   
  4.             @Override  
  5.             public void windowActivated(WindowEvent e) {  
  6.                 System.out.println("window Activated");  
  7.                 if (task != null) {  
  8.                     task.cancel();  
  9.                     task = null;  
  10.                 }  
  11.                 super.windowActivated(e);  
  12.             }  
  13.   
  14.             @Override  
  15.             public void windowDeactivated(WindowEvent e) {  
  16.                 System.out.println("window Deactivated");  
  17.                 if (isLocked) {// over three times and is still locked,meanwhile use  
  18.                     // try to log in  
  19.                     if (task != null) {  
  20.                         task.cancel();  
  21.                         task = null;  
  22.                     }  
  23.                 } else {// first into this if clause(if (timesFail >=  
  24.                         // LoginUtil.MAX_LOGIN_FAIL_TIMES ))  
  25.                     task = null;  
  26.                 }  
  27.                 if (timer == null) {  
  28.                     timer = new Timer();  
  29.                 }  
  30.               
  31.                 if (task == null) {  
  32.                     task = new MyTask(QRCodeApp.this);  
  33.                 }  
  34.                 timer.schedule(task, Constant.MILLISECONDS_WAIT_WHEN_FAIL);  
  35.                 System.out.println("开始计时");  
  36.                 isLocked = true;  
  37.                 super.windowDeactivated(e);  
  38.             }  
  39.   
  40.             @Override  
  41.             public void windowGainedFocus(WindowEvent e) {  
  42.                 System.out.println("window GainedFocus");  
  43.                 super.windowGainedFocus(e);  
  44.             }  
  45.   
  46.             @Override  
  47.             public void windowLostFocus(WindowEvent e) {  
  48.                 System.out.println("window LostFocus");  
  49.                 super.windowLostFocus(e);  
  50.             }  
  51.               
  52.         });  
  53.     }  

 MyTask 源码:

Java代码   收藏代码
  1. package com.qr.yj.common;  
  2.   
  3. import com.qr.yj.QRCodeApp;  
  4.   
  5. public class MyTask extends java.util.TimerTask{  
  6.     private QRCodeApp frame;  
  7.       
  8.     public MyTask(QRCodeApp frame) {  
  9.         super();  
  10.         this.frame=frame;  
  11.     }  
  12.   
  13.     @Override  
  14.     public void run() {  
  15.         frame.setLocked(false);  
  16.         System.out.println("$$$$$");  
  17.         frame.dispose();  
  18.         System.exit(0);  
  19.     }  
  20. }  

 说明:

(1)Constant.MILLISECONDS_WAIT_WHEN_FAIL 的值600000 ,int类型,单位是:毫秒,即600秒.

(2)QRCodeApp 继承了JFrame,有如下成员变量:

Java代码   收藏代码
  1. private Timer timer = new Timer();  
  2.     private MyTask task = null;  
  3.     private boolean isLocked = false;  

 后台日志:

window Activated

window Deactivated

开始计时

window Activated

window Deactivated

开始计时

$$$$$

 

程序源代码见附件:qrcode_swing.zip

依赖的jar包:io0007-find_progess-0.0.8.4-SNAPSHOT.jar,

注意:程序采用maven 构建

相关文章
|
5天前
|
存储 Java 关系型数据库
农产品管理系统【GUI/Swing+MySQL】(Java课设)
农产品管理系统【GUI/Swing+MySQL】(Java课设)
20 1
|
5天前
|
存储 Java 关系型数据库
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
22 0
|
5天前
|
存储 Java 关系型数据库
酒店管理系统【GUI/Swing+MySQL】(Java课设)
酒店管理系统【GUI/Swing+MySQL】(Java课设)
25 1
|
5天前
|
存储 Java 关系型数据库
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
31 1
|
5天前
|
存储 Java 关系型数据库
仓库管理系统【GUI/Swing+MySQL】(Java课设)
仓库管理系统【GUI/Swing+MySQL】(Java课设)
22 0
|
5天前
|
存储 Java 关系型数据库
游乐场管理系统【GUI/Swing+MySQL】(Java课设)
游乐场管理系统【GUI/Swing+MySQL】(Java课设)
19 0
|
5天前
|
存储 Java 关系型数据库
影碟出租管理系统【GUI/Swing+MySQL】(Java课设)
影碟出租管理系统【GUI/Swing+MySQL】(Java课设)
19 0
|
5天前
|
存储 Java 关系型数据库
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
21 0
|
5天前
|
Java 关系型数据库 MySQL
基于swing的java物业管理系统
基于swing的java物业管理系统
23 5
|
5天前
|
Java 测试技术 定位技术
《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
【4月更文挑战第15天】本文介绍了如何使用Selenium进行浏览器窗口切换以操作不同页面元素。首先,获取浏览器窗口句柄有两种方法:获取所有窗口句柄的集合和获取当前窗口句柄。然后,通过`switchTo().window()`方法切换到目标窗口句柄。在项目实战部分,给出了一个示例,展示了在百度首页、新闻页面和地图页面之间切换并输入文字的操作。最后,文章还探讨了在某些情况下可能出现的问题,并提供了一个简单的本地HTML页面示例来演示窗口切换的正确操作。
50 0