在60秒不活动后注销Java应用程序?

在60秒不活动后注销Java应用程序?,java,swing,netbeans,timer,Java,Swing,Netbeans,Timer,我已经开发了一个JavaSwing应用程序,我想让它在大约60秒不活动的情况下自动注销。我尝试过使用java定时器,但在我尝试过的许多例子中,没有一个是有效的 下面是我尝试过的最新版本(也是唯一一个代码中没有任何错误的版本): 但是,当我运行应用程序时,它会在堆栈跟踪中获得以下输出: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.util.Timer.sched(Timer.ja

我已经开发了一个JavaSwing应用程序,我想让它在大约60秒不活动的情况下自动注销。我尝试过使用java定时器,但在我尝试过的许多例子中,没有一个是有效的

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

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

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)
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 位于java.util.Timer.sched(Timer.java:399) 在java.util.Timer.schedule中(Timer.java:193) 在AdminMainPage.AutoLogout(AdminMainPage.java:1078) 在AdminMainPage上。(AdminMainPage.java:23) 在AdminMainPage$35.run(AdminMainPage.java:1289) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)中 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在java.awt.EventQueue$3.run(EventQueue.java:709) 在java.awt.EventQueue$3.run(EventQueue.java:703) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 我试过Stackoverflow的几个例子,但都不管用。否则,如何让系统在60秒不活动后自动注销?

查看一个简单类,该类将在给定时间段后调用操作

代码使用
AWTEventListener
侦听事件。每次生成事件时,都会重新启动
摆动计时器。当
摆动计时器
触发您指定的
操作时,将调用该操作。

如果查看,您将看到:

throws a NullPointerException - if task is null
这正是你在这一行所做的

timer.schedule(null, 5000);

这就解释了向你抛出的异常。我不认为调度程序是正确的方法,因为每个用户活动都应该重置计时器。

但是,除了null之外,我放在那里的任何东西都会给我一个错误,您到底尝试了什么?参数必须是
TimerTask
的一个实例。各种各样的东西,它们都给出了错误。一个例子使用了一个类,但当我尝试时,它仍然给出了一个错误。我仍在努力理解java定时器。什么是适合使用的参数。不要使用TimerTask。你应该使用一个摆动计时器。一旦计时器触发,您希望代码在事件调度线程上执行,您是说使用javax.swing.Timer?不要使用计时器任务。你应该使用一个摆动计时器。一旦计时器触发,您希望代码在事件分派线程上执行。这是我找到的示例之一,我无法让它工作。应用程序在一分钟后继续运行。我遇到的问题是,无论我怎么尝试,我都无法将它调用到我想要的类。或者我应该用另一种方式来实现它?你得到了5-6行代码。如果你不能复制那些代码行,我不知道你在做什么。你有你的登录页面,大概是你想要关闭的框架,这就是你在动作中使用的。好吧,让我问你这个。你给我的链接。这是一个普通的Java类,对吗?一旦我创建了这个类,我将如何让它与我的应用程序一起工作呢。因为我试着用正常的方式来称呼它,但它什么也没做。也许你能告诉我你是如何实现的,也许我能知道我错在哪里,我给你看了代码。在main方法中,您创建一个JFrame(您不需要向框架或任何东西添加任何组件。然后您使框架可见。然后您将侦听器添加到框架。实际上,您只需将博客的代码复制到main()方法。尽管创建侦听器后,您可能需要添加
listener.setIntervalInMillis(5000);
这样帧将在5秒钟内关闭,而不是等待几分钟。
timer.schedule(null, 5000);