我写了一些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 构建
相关推荐
Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java AWT(抽象窗口工具包)的扩展,提供了更多丰富的组件和功能。在Java Swing中实现自动定时关机的功能,通常涉及到对操作系统API的调用,以及Swing...
1. 用户界面:使用Swing组件如`JFrame`作为主窗口,`JLabel`显示倒计时,`JTextField`让用户输入关机时间,以及`JButton`供用户启动和取消定时关机。 2. 定时器:创建`Timer`实例,设置一个回调函数(`TimerTask`)...
为了使圆随机移动,可以定时重绘`JPanel`,每次重绘时更新圆的位置。`javax.swing.Timer`类可以实现这一点,设置一定时间间隔后触发重绘事件。 西安电子科技大学的这个上机题旨在让学生熟悉Java Swing的基本使用,...
当计数器达到预设的n次时,调用JFrame的dispose()方法关闭窗口。 Swing还提供了setAlwaysOnTop(true)方法,用于设置窗口始终显示在其他窗口之上。这确保了无论用户如何切换应用,漂浮窗口都保持可见。 此外,文档...
Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件库,如JFrame(主窗口)、JButton(按钮)、JLabel(标签)、JTextArea(文本区域)等,用于创建功能齐全的桌面应用。通过Swing,开发者可以创建多...
Java Swing 是 Java 用于创建图形用户界面(GUI)的一个库,它是 Java AWT(Abstract Window Toolkit)的扩展,提供了更多的组件、事件处理机制以及更现代的外观和感觉。本压缩包"java-swing-example.rar"包含了一个...
这段代码使用 Java 的 Swing 库创建了一系列随机出现的对话框窗口,并在一定时间后自动关闭这些窗口。最后,显示一个特定的对话框,在一段时间后程序退出。 这段代码可以用于创建一些具有特殊效果的图形用户界面,...
Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序。在这个项目中,我们关注的是如何使用Swing来创建一个指针时钟。对于Java初学者来说,这是一个很好的练习,因为...
Java Swing是Java编程语言中用于构建桌面应用程序图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。本教材《Java 精通SWING》专注于讲解如何使用Swing来创建功能丰富的、交互式的Java应用...
【Java潜艇游戏与JavaSwing】 JavaSwing是Java GUI(图形用户界面)库,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。在这个项目中,我们看到一个用JavaSwing开发的简易潜艇游戏,这为学习...
3. **事件处理**:Swing使用事件监听器来处理用户交互,例如按钮点击、窗口关闭等事件,只需实现对应的监听接口并添加到组件即可。 4. **组件动画**:Swing支持通过javax.swing.Timer类来创建定时任务,实现组件的...
【标题】"儿时回忆,贪吃蛇,Java swing编写,完美运行。myeclipes导入即可"揭示了这个项目是使用Java Swing库来实现的一个经典游戏——贪吃蛇。Java Swing是Java AWT(Abstract Window Toolkit)的一部分,提供了一...
Java Swing 是Java GUI(图形用户界面)库的一部分,用于创建桌面应用程序。在Swing中,时间控件通常指的是可以展示和处理日期与时间的组件。本主题将深入讲解如何在Java Swing中创建和使用时间控件,以及如何利用...
这个简单的Java Swing闹钟项目是一个很好的学习实践,涵盖了GUI设计、事件处理、定时任务和音频播放等多个方面。对于初学者来说,通过此项目可以深入理解Java Swing的基本用法,并提升实际开发能力。
在Java记事本中,Swing的JFrame类被用作主窗口,而其他组件如JMenuBar、JMenuItem、JLabel、JTextField等则用于构建菜单栏、下拉菜单、输入框等元素。 定时保存功能是这个记事本的一大亮点。它使用了Java的定时任务...
4. **定时器(Timer)**: Java Swing的javax.swing.Timer类可以用来控制弹幕的显示间隔,定时触发弹幕的滚动或淡入淡出效果。 5. **数据结构与算法**: 弹幕数据通常以文本或XML格式存储,需要解析这些数据并将其...
3. Timer:贪吃蛇游戏需要定时更新蛇的位置和食物的生成,Java Swing的javax.swing.Timer类非常适合这类定时任务。 4. KeyListener或KeyBindings:贪吃蛇游戏需要监听键盘输入,改变蛇的方向。我们可以为JPanel添加...
首先,`ClockFrame.java`文件很可能是整个程序的主类,它包含了Swing的主窗口组件。在Swing中,`JFrame`是顶级容器,用于承载其他组件,如按钮、文本框等。这个类可能会定义一个`JFrame`实例,并在其上添加用于设置...
在《JavaSwing坦克大战》中,Swing被用来创建游戏的主窗口、菜单栏、游戏面板以及其他交互元素,如开始按钮、设置按钮等。开发者需要熟练掌握JFrame、JPanel、JButton、JMenuItem等类的使用,以及事件监听机制,来...