`

java swing 窗口不用时定时关闭

阅读更多

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

如何实现呢?

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

private void init33() {
		this.addWindowListener(new WindowAdapter() {

			@Override
			public void windowActivated(WindowEvent e) {
				System.out.println("window Activated");
				if (task != null) {
					task.cancel();
					task = null;
				}
				super.windowActivated(e);
			}

			@Override
			public void windowDeactivated(WindowEvent e) {
				System.out.println("window Deactivated");
				if (isLocked) {// over three times and is still locked,meanwhile use
					// try to log in
					if (task != null) {
						task.cancel();
						task = null;
					}
				} else {// first into this if clause(if (timesFail >=
						// LoginUtil.MAX_LOGIN_FAIL_TIMES ))
					task = null;
				}
				if (timer == null) {
					timer = new Timer();
				}
			
				if (task == null) {
					task = new MyTask(QRCodeApp.this);
				}
				timer.schedule(task, Constant.MILLISECONDS_WAIT_WHEN_FAIL);
				System.out.println("开始计时");
				isLocked = true;
				super.windowDeactivated(e);
			}

			@Override
			public void windowGainedFocus(WindowEvent e) {
				System.out.println("window GainedFocus");
				super.windowGainedFocus(e);
			}

			@Override
			public void windowLostFocus(WindowEvent e) {
				System.out.println("window LostFocus");
				super.windowLostFocus(e);
			}
			
		});
	}

 MyTask 源码:

package com.qr.yj.common;

import com.qr.yj.QRCodeApp;

public class MyTask extends java.util.TimerTask{
	private QRCodeApp frame;
	
	public MyTask(QRCodeApp frame) {
		super();
		this.frame=frame;
	}

	@Override
	public void run() {
		frame.setLocked(false);
		System.out.println("$$$$$");
		frame.dispose();
		System.exit(0);
	}
}

 说明:

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

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

private Timer timer = new Timer();
	private MyTask task = null;
	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 构建

 

0
0
分享到:
评论

相关推荐

    Java Swing 自动定时关机代码

    Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java AWT(抽象窗口工具包)的扩展,提供了更多丰富的组件和功能。在Java Swing中实现自动定时关机的功能,通常涉及到对操作系统API的调用,以及Swing...

    java Swing定时关机

    1. 用户界面:使用Swing组件如`JFrame`作为主窗口,`JLabel`显示倒计时,`JTextField`让用户输入关机时间,以及`JButton`供用户启动和取消定时关机。 2. 定时器:创建`Timer`实例,设置一个回调函数(`TimerTask`)...

    Java swing画随机圆

    为了使圆随机移动,可以定时重绘`JPanel`,每次重绘时更新圆的位置。`javax.swing.Timer`类可以实现这一点,设置一定时间间隔后触发重绘事件。 西安电子科技大学的这个上机题旨在让学生熟悉Java Swing的基本使用,...

    java swing 时间控件

    Java Swing 是Java GUI(图形用户界面)库的一部分,用于创建桌面应用程序。在Swing中,时间控件通常指的是可以展示和处理日期与时间的组件。本主题将深入讲解如何在Java Swing中创建和使用时间控件,以及如何利用...

    java漂浮窗口源代码

    当计数器达到预设的n次时,调用JFrame的dispose()方法关闭窗口。 Swing还提供了setAlwaysOnTop(true)方法,用于设置窗口始终显示在其他窗口之上。这确保了无论用户如何切换应用,漂浮窗口都保持可见。 此外,文档...

    基于Java Swing远程屏幕监控系统.zip

    Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件库,如JFrame(主窗口)、JButton(按钮)、JLabel(标签)、JTextArea(文本区域)等,用于创建功能齐全的桌面应用。通过Swing,开发者可以创建多...

    java-swing-example.rar_JavaSwing_java swing_图形处理

    Java Swing 是 Java 用于创建图形用户界面(GUI)的一个库,它是 Java AWT(Abstract Window Toolkit)的扩展,提供了更多的组件、事件处理机制以及更现代的外观和感觉。本压缩包"java-swing-example.rar"包含了一个...

    基于JAVA编写的swing随机窗口

    这段代码使用 Java 的 Swing 库创建了一系列随机出现的对话框窗口,并在一定时间后自动关闭这些窗口。最后,显示一个特定的对话框,在一段时间后程序退出。 这段代码可以用于创建一些具有特殊效果的图形用户界面,...

    基于java swing的指针时钟

    Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序。在这个项目中,我们关注的是如何使用Swing来创建一个指针时钟。对于Java初学者来说,这是一个很好的练习,因为...

    Java 精通SWING教材 电子书

    Java Swing是Java编程语言中用于构建桌面应用程序图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。本教材《Java 精通SWING》专注于讲解如何使用Swing来创建功能丰富的、交互式的Java应用...

    Java潜艇游戏 JavaSwing

    【Java潜艇游戏与JavaSwing】 JavaSwing是Java GUI(图形用户界面)库,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。在这个项目中,我们看到一个用JavaSwing开发的简易潜艇游戏,这为学习...

    javaswing.zip

    3. **事件处理**:Swing使用事件监听器来处理用户交互,例如按钮点击、窗口关闭等事件,只需实现对应的监听接口并添加到组件即可。 4. **组件动画**:Swing支持通过javax.swing.Timer类来创建定时任务,实现组件的...

    儿时回忆,贪吃蛇,Java swing编写,完美运行。myeclipes导入即可

    【标题】"儿时回忆,贪吃蛇,Java swing编写,完美运行。myeclipes导入即可"揭示了这个项目是使用Java Swing库来实现的一个经典游戏——贪吃蛇。Java Swing是Java AWT(Abstract Window Toolkit)的一部分,提供了一...

    java swing闹钟小项目.zip

    这个简单的Java Swing闹钟项目是一个很好的学习实践,涵盖了GUI设计、事件处理、定时任务和音频播放等多个方面。对于初学者来说,通过此项目可以深入理解Java Swing的基本用法,并提升实际开发能力。

    java版记事本源码 Java记事本 记事本java程序 java swing 记事本

    在Java记事本中,Swing的JFrame类被用作主窗口,而其他组件如JMenuBar、JMenuItem、JLabel、JTextField等则用于构建菜单栏、下拉菜单、输入框等元素。 定时保存功能是这个记事本的一大亮点。它使用了Java的定时任务...

    一个基于java swing写的桌面弹幕播放器,用于播放离线弹幕或某些网站的在线弹幕.zip

    4. **定时器(Timer)**: Java Swing的javax.swing.Timer类可以用来控制弹幕的显示间隔,定时触发弹幕的滚动或淡入淡出效果。 5. **数据结构与算法**: 弹幕数据通常以文本或XML格式存储,需要解析这些数据并将其...

    tanchishe.rar_java swing

    3. Timer:贪吃蛇游戏需要定时更新蛇的位置和食物的生成,Java Swing的javax.swing.Timer类非常适合这类定时任务。 4. KeyListener或KeyBindings:贪吃蛇游戏需要监听键盘输入,改变蛇的方向。我们可以为JPanel添加...

    Swing的一个定时关机代码

    首先,`ClockFrame.java`文件很可能是整个程序的主类,它包含了Swing的主窗口组件。在Swing中,`JFrame`是顶级容器,用于承载其他组件,如按钮、文本框等。这个类可能会定义一个`JFrame`实例,并在其上添加用于设置...

    JavaSwing坦克大战

    在《JavaSwing坦克大战》中,Swing被用来创建游戏的主窗口、菜单栏、游戏面板以及其他交互元素,如开始按钮、设置按钮等。开发者需要熟练掌握JFrame、JPanel、JButton、JMenuItem等类的使用,以及事件监听机制,来...

Global site tag (gtag.js) - Google Analytics