Inaktivität vom benutzer

Joschie

Mitglied
Hallo,

habe folgendes Problem: Will auf ein JFrame eine Art Listener adden, der darauf achtet ob der Benutzer etwas macht oder nicht, wenn der Benutzer 15 Minuten nix macht, d.h. keine Mausklicks unnd Tastaturaktivitäten, dann soll eine Meldung kommen.

Mein bisheriger Code beschränkt sich nur auf:

JFrame fenster = new JFrame("Test");



habs mit MouseListener versucht allerdings löst dieser zu viele events aus...und mein anderes Problem ist, wo ich das mit den 15 Minuten überprüfe...

Ich bitte um eure Hilfe.

Danke

Joschie
 
Möchtest du überprüfen ob der Benutzer 15 min nichts mehr an deiner Applikation oder allgemein 15 min. nichts gemacht hat?

Bei letzterem solltest du vor die eigentliche Eventqueue noch eine eigene Queue setzen...

und das abfragen der 15 min kannst du klasse machen indem du einen Thread baust, der die letzte Zeit der Eingabe des Users nimmt und diese sekündlich überprüft ob sie > als 15 min ist. Wenn ja, dann gib eine Meldung oder sonstwas rauß.

Christian

Ich habe dir mal den Code dafür gebastelt, wenn du fragen hast, meld dich, ich gehe nun ins WE. ;)

Java:
import java.awt.AWTEvent;
import java.awt.EventQueue;
import java.awt.Toolkit;

import javax.swing.JFrame;


public class Sandkasten extends JFrame{

	private volatile long l = System.currentTimeMillis(); 
	private int waitTimeInMinutes = 15;
	
	public Sandkasten(){
		this.setSize(640, 480);
		Toolkit.getDefaultToolkit().getSystemEventQueue().push(new EventQueue(){
 			protected void dispatchEvent(AWTEvent event) {
 				System.out.println(event);
 				l = System.currentTimeMillis();
 				super.dispatchEvent(event);
 			}
 		});
		
		
		new Thread("Watcher"){
			long waiter = (waitTimeInMinutes*60000);//to get Waiting-Time in ms
			public void run() {
				
				while(true){
					try {Thread.sleep(1000);} catch (InterruptedException e) {Thread.currentThread().interrupt();};
					if(l<(System.currentTimeMillis()-waiter)){
						System.out.println("Time expired...");
						System.exit(0);
					}
				}
			};
		}.start();
	}
	
	public static void main(String args[]){
		new Sandkasten().setVisible(true);
	}
}
 
Zuletzt bearbeitet:
danke schön....

hat perfekt funktioniert....genau so hab ich mir das vorgestellt...

vielen dank....

auf die idee mit einem Thread bin ich net gekommen :-)
 
Zurück