java - 60 秒不活动后退出 Java 应用程序?

标签 java swing netbeans timer

我开发了一个 Java Swing 应用程序,我想让它在大约 60 秒不活动的情况下自动注销。我尝试过使用 java 计时器,但在我尝试过的许多示例中,它们似乎都不起作用。

这是我尝试过的最新一个(也是唯一一个代码中没有任何错误的):

int seconds;
    Timer timer;
    Toolkit toolkit;
    public void AutoLogout()
    {
        toolkit = Toolkit.getDefaultToolkit();
        timer = new Timer();
        timer.schedule(null, 5000);
        if(seconds == 0)
        {
            LoginPage lp = new LoginPage();
            lp.setVisible(true);
            this.dispose();
        }
    }

但是,当我运行应用程序时,它在堆栈跟踪中得到以下输出:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.util.Timer.sched(Timer.java:399)
    at java.util.Timer.schedule(Timer.java:193)
    at AdminMainPage.AutoLogout(AdminMainPage.java:1078)
    at AdminMainPage.<init>(AdminMainPage.java:23)
    at AdminMainPage$35.run(AdminMainPage.java:1289)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

我尝试了 Stackoverflow 中的几个示例,但没有一个起作用。我还能如何让系统在 60 秒不活动后自动注销?

最佳答案

查看Application Inactiviy对于一个简单的类,它将在给定的时间段后调用一个操作。

该代码使用 AWTEventListener 来监听事件。每次生成事件时,Swing Timer 都会重新启动。当 Swing Timer 触发时,将调用您指定的Action

关于java - 60 秒不活动后退出 Java 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337058/

相关文章:

java - 映射 Java 持久性中的附加字段

java - 鼠标监听器未触发

java - 如何保持代码整洁有序?

java - FIleNotFoundException - 表达式的非法开始 - NetBeans

java - 自定义 JComponent 拒绝绘制(如果添加到 ArrayList)

java - 冗余 If 语句警告

java - 我的字节数组长度不等于文件.txt 文件大小

java - 如果两个对象具有相同的哈希码那么它们的内存地址怎么办

java - 如何在设置铃声之前清除 Mediastore

java - 重新排列列时,对 JTable 列的编辑将数据放置在错误的列中