Swing Gui auf Benutzerinteraktion prüfen

LiiKe

Mitglied
Guten Abend,
ich bin im Moment dabei ein Java Programm zu schreiben. Quasi ein Passwordmanagementesystem. Nun möchte ich sobald der Nutzer 5 Minuten lang nicht mit der Gui interagiert, dass das Fenster minimiert wird und man sich erneut einloggen muss. Wie ich die Parallelverarbeitung mache weiß ich, nur gibt es eine Möglichkeit zu prüfen ob der Nutzer irgendetwas in der GUI macht?

LG Nico
 

wef34fewrg

Aktives Mitglied
Die Frage finde ich etwas komisch. Gäbe es die Möglichkeit nicht, dann wäre ein Interface ja sinnlos oder? ;)
Mir persönlich wäre jetzt keine Klasse bekannt, welche explizit auf "Inaktivität" prüft.
Der erste Einfall wäre das einfach über die angemeldeten Listener zu lösen, die dir sagen, ob und wann ein User ein Event auslöst.
Das AWTEventListener Interface wäre ganz interessant, da du die Eventmaske, also auf welche Events reagiert wird, selbst bestimmen kannst. Meldest du den Listener an alle für dich wichtigen Components an, könntest du auf Inaktivität reagieren in dem du nach 5 Minuten selbst ein Event wirfst, bzw. den Timer bei Aktivität wieder resetest. Praktisch genau das selbe mit einem (Hintergrund)Thread.

Eine zweite Variante (ich kann nicht mal sagen ob die erste jetzt schön ist;)), vielleicht aber unschöne, wäre es, vor jeder Eingabe zu prüfen ob "die aktuelle Zeit" minus der "last Event Zeit" größer als 5 min ist und verweigerst dem User die Eingabe bis er sich neu anmeldet.

Und nicht vergessen mit invokeLater(); zu arbeiten, wenn du "manuell" an der GUI rumpfuschen willst.
 
Zuletzt bearbeitet:

LiiKe

Mitglied
Hallo,
erstmal danke für die Antwort, ja das war auch meine Idee das mit den Listenern zu lösen nur muss ich dort jeden Listener Prüfen.. also alle Key-,Action-,Mouse- usw.. Da diese sehr viele sind wollte ich das vermeiden. Ich denke da müsste es eine bessere variante geben...
 

wef34fewrg

Aktives Mitglied
Ich meine, dass du dir die Sachen vielleicht ansehen solltest, damit du abwägen kannst, ob da was für dich dabei ist. Kann dir ja nicht garantieren, dass du es magst bzw. das es die beste Lösung (für dich) ist, aber das musst du schon selber rausfinden. ;)


a) Prinzipiell würde es ja reichen, wenn du eine Methode hast, die den Aktualisierungsvorgang (also setze "Stoppuhr" auf 5 min nach der letzten Eingabe) beinhaltet. Die kannst du dann in deinen angemeldeten Action-, Keylistener,.... aufrufen. Der Aufwand hält sich für mich jetzt in Grenzen, da du die Listener ohne hin für deine Interaktionselemente implementierst und dort nur eine Zeile hinzufügst. ;)

b) Willst du jetzt zusätzlich zu den gebrauchten Listenern noch andere Events abfangen, dann könntest du dir das oben erwähnte AWTEventListener Interface ansehen, da du die abzufangenden Events bestimmen kannst. In deinem Fall hielte ich zumindest Variante a für vollkommen ausreichend.

1)Wenn du dich dann für eine Variante entschieden hast, kannst du die es entweder mit einem selber geworfenen Event umsetzen. Dazu schau dir mal javax.swing.Timer an, welche ein ActionEvent nach einer vorgegeben Verzögerung wirft. Beinhaltete u.a. die Methoden start(), stop() und restart(), also perfekt für dich.
2)Oder du arbeitest mit einem Thread der in einer Schleife wartet bzw. schläft und nach 5 Minuten die Schleifenbedingung auf false setzt, um danach seine Arbeit zu tun und bei der nächsten Anmeldung neu initialisiert wird.


just my two cents, die ich mit a) 1) am schönsten umgesetzt sehe.
 
Zuletzt bearbeitet:

turtle

Top Contributor
Was spricht dagegen die EventQueue zu tauschen?
Java:
		 EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
	        eventQueue.push(new MyEventQueue());

Java:
private static class MyEventQueue extends EventQueue {
        public void postEvent(AWTEvent theEvent) {
            System.out.println("Event Posted"); // Ein Event!
            super.postEvent(theEvent);
        }
    }
Habe ich nicht probiert, wäre aber mein erster Ansatz.
 

LiiKe

Mitglied
Hallo,
ich habe beide Möglichkeiten ausprobiert. Funktioniert beides, wobei der EventQueue um einiges besser ist, da er auch events wie einen TabbedPane wechsel ohne extra Listener erkennt.
Vielen Dank euch beiden!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Justin09 Strings prüfen AWT, Swing, JavaFX & SWT 4
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
S JavaFX TextField auf Datentyp prüfen AWT, Swing, JavaFX & SWT 1
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
I JavaFX TextField auf Eingabe prüfen AWT, Swing, JavaFX & SWT 3
J JavaFx/SceneBuilder/Felder beim verlassen prüfen AWT, Swing, JavaFX & SWT 1
M Swing JTable >> Eingaben prüfen => Empfehlungen? AWT, Swing, JavaFX & SWT 2
R Prüfen ob Form bereits geöffnet AWT, Swing, JavaFX & SWT 9
M JTable: Prüfen ob Zelle leer ist AWT, Swing, JavaFX & SWT 5
llabusch Prüfen ob JMenu leer ist & löschen AWT, Swing, JavaFX & SWT 1
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
U Swing JTextField zur Laufzeit auf Eingaben prüfen AWT, Swing, JavaFX & SWT 0
T Prüfen ob 2 JLabel übereinander liegen. Performance Problem. AWT, Swing, JavaFX & SWT 5
N Methode zum Prüfen ob Jtextfield verändert worden ist AWT, Swing, JavaFX & SWT 2
M Komponenten übereinander prüfen AWT, Swing, JavaFX & SWT 3
P Vor Beenden änderungen prüfen AWT, Swing, JavaFX & SWT 2
S SWT Wie bei Widget Text auf int prüfen bei Eingabe AWT, Swing, JavaFX & SWT 5
A Prüfen, ob ein Float eingegeben wurde AWT, Swing, JavaFX & SWT 5
klattiator CardLayout - Cards auf Existenz prüfen AWT, Swing, JavaFX & SWT 3
A Datum prüfen AWT, Swing, JavaFX & SWT 11
M Prüfen, ob in einem Textfeld/Tabelle eine Eingabe erfolgt is AWT, Swing, JavaFX & SWT 11
G Prüfen ob ein Treepath existiert AWT, Swing, JavaFX & SWT 3
G eingegebene Werte einer JTable prüfen? Bitte helfen AWT, Swing, JavaFX & SWT 5
I Prüfen einer Eingabe in JTextField, Fokusverlust AWT, Swing, JavaFX & SWT 2
C JTextField Eingabe prüfen AWT, Swing, JavaFX & SWT 4
D Prüfen, ob Fenster bereits schon geöffnet ist AWT, Swing, JavaFX & SWT 1
G Inhalt von Textfeld prüfen AWT, Swing, JavaFX & SWT 10
W JTextField auf gültigkeit prüfen AWT, Swing, JavaFX & SWT 2
E Inhalt einer JComboBox aufgrund von Eintragungen prüfen,??? AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben