天天看點

java swing 視窗不用時定時關閉

如何實作呢?

啟動主視窗時,調用如下方法,給frame添加監聽事件:

java swing 視窗不用時定時關閉

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);  

            }  

            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 ))  

                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);  

            public void windowgainedfocus(windowevent e) {  

                system.out.println("window gainedfocus");  

                super.windowgainedfocus(e);  

            public void windowlostfocus(windowevent e) {  

                system.out.println("window lostfocus");  

                super.windowlostfocus(e);  

        });  

    }  

 mytask 源碼:

java swing 視窗不用時定時關閉

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,有如下成員變量:

java swing 視窗不用時定時關閉

private timer timer = new timer();  

    private mytask task = null;  

    private boolean islocked = false;  

 背景日志:

window activated

window deactivated

開始計時

$$$$$

程式源代碼見附件:qrcode_swing.zip

依賴的jar包:io0007-find_progess-0.0.8.4-snapshot.jar,

注意:程式采用maven 建構