私はJava Swingアプリケーションを開発しました。約60秒間非アクティブになると自動的にログアウトするようにしたいと考えています。私は、Javaタイマーを使用してみましたが、私が試した多くの例のうち、どれも動作していないようです。ここで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秒間何も操作しなくても自動的にログアウトする方法はありますか?
TimerTaskを使用しないでください。あなたはスイングタイマーを使用する必要があります。タイマーが起動すると、Event Dispatch Threadでコードを実行します。 – camickr