Action Events

Status
Nicht offen für weitere Antworten.

Nathy

Aktives Mitglied
Hallo

Ich habe noch eine Frage zu einem Action Event. Es wird ein Button gedrückt und ein Event ausgelöst. In der actionPerformed Methode sage ich dann diesem Event, dass das Programm eine neue Methode ausführen soll. Dies geschieht auch. Da aber diese aufgerufene Methode lange läuft (while Schlaufe integriert) bleibt der Button, den ich vorher gedrückt habe immer noch activ. Wie kann ich dies ändern? Ich muss wohl irgendwie die actionPerformed Methode verlassen oder wie funktioniert das?

Hier noch der Code der Action Methode.
Code:
public void actionPerformed(ActionEvent e)
{
        if(e.getActionCommand()=="Filter löschen"){
        filterOn = false;
        this.start();
}

Gruss und danke
 

Wildcard

Top Contributor
Alles arbeitsintensive muss in einem seperaten Thread ausgeführt werden damit der EventDispatcher Thread nicht blockiert wird.
 

Leroy42

Top Contributor
Ja und Nein! Du bist gerade auf ein Problem gestoßen
für den das Prinzip des Multi-threadings erfunden wurde. :)

Du mußt deine start-Methode in einem separaten Thread
- quasi parallel - laufen lassen, sodaß deine GUI weiter auf Eingaben reagieren
kann.

Code:
public void actionPerformed(ActionEvent e) { 
  if (e.getActionCommand()=="Filter löschen") { 
     new Thread(new Runnable() {
       public void run() {
         filterOn = false; 
         // Achtung: Habe hier das this. entfernt
         start(); 
      }}).start();
}

Die start-Methode des Threads heißt übrigens immer so,
es ist Zufall, daß deine eigene Methode auch start heißt.

Edit: Mein "Ja und Nein"" bezog sich nicht auf Wildcards Post sondern
auf die Originalposterin (war halt zu langsam...)
 

WieselAc

Top Contributor
Muss ich euch stimmen!

Aber für ne "quick hacklösung" würd ich in der action einfach die GUI einfrieren, dann die Berechung durchführen und dann vor dem verlassen der Action-Methode die GUI wieder freigeben (gegebenfalls durch finally absichern).


Diesen Weg sollte man nicht unbedingt machen, aber manchmal tut man es halt doch.
 

Leroy42

Top Contributor
WieselAc hat gesagt.:
Aber für ne "quick hacklösung" würd ich in der action einfach die GUI einfrieren, dann die Berechung durchführen und dann vor dem verlassen der Action-Methode die GUI wieder freigeben (gegebenfalls durch finally absichern).

:shock: ???:L :autsch:
 

Wildcard

Top Contributor
WieselAc hat gesagt.:
Aber für ne "quick hacklösung" würd ich in der action einfach die GUI einfrieren, dann die Berechung durchführen.
Java ist alles Mist weil viel zu langsam. Ständig friert das Programm ein wenn ich auf einen Knopf drücke :roll:
 

Leroy42

Top Contributor
Leroy42 hat gesagt.:
WieselAc hat gesagt.:
Aber für ne "quick hacklösung" würd ich in der action einfach die GUI einfrieren, dann die Berechung durchführen und dann vor dem verlassen der Action-Methode die GUI wieder freigeben (gegebenfalls durch finally absichern).

:shock: ???:L :autsch:

Edit: Wie friert man denn die GUI ein und wie gibt man sie wieder frei? :bahnhof:
 

Leroy42

Top Contributor
Wildcard hat gesagt.:
WieselAc hat gesagt.:
Aber für ne "quick hacklösung" würd ich in der action einfach die GUI einfrieren, dann die Berechung durchführen.
Java ist alles Mist weil viel zu langsam. Ständig friert das Programm ein wenn ich auf einen Knopf drücke :roll:

LOL :applaus: :applaus: :applaus:

Genau so entstehen die üblichen Java-Klischees. :cool:
 

Nathy

Aktives Mitglied
Habe den Code genau so geschrieben:
Code:
public void actionPerformed(ActionEvent e) {
  if (e.getActionCommand()=="Filter löschen") {
     new Thread(new Runnable() {
       public void run() {
         filterOn = false;
         // Achtung: Habe hier das this. entfernt
         start();
      }}).start();
}

Leider kommt mir dort ein Fehler. Kannst du mir den Code vielleicht einwenig einfacher machen. Nicht mit einer internen Methode.

Gruss und danke
 

Leroy42

Top Contributor
Kommt darauf an, was genau du willst.

Das was du beschrieben hast, läßt sich problemlos in einem
Thread bewerkstelligen.
 

Nathy

Aktives Mitglied
Hallo

Super jetzt klappt es. Habe die Methode umbennent.
Kannst du mir vielleicht noch erklären, warum es jetzt läuft?
Gruss
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
Meeresgott Input/Output Polling mit (Action)-Listenern? Allgemeine Java-Themen 3
R Servelt mit <form action=""> aufrufen (.jsp) Allgemeine Java-Themen 7
D Action Listener Problem Allgemeine Java-Themen 3
X Action in Action aufrufen Allgemeine Java-Themen 2
T Button Action Allgemeine Java-Themen 10
S Action mehrmals klicken Allgemeine Java-Themen 3
I Action parallel abarbeiten Allgemeine Java-Themen 3
M Action-listener Allgemeine Java-Themen 6
C Anfaenger Problem mit Action Handling. Allgemeine Java-Themen 2
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
F Event Handling Eingabestift events entgegennehmen Allgemeine Java-Themen 0
M Events gehen verloren Allgemeine Java-Themen 7
R Events "verteilen" Allgemeine Java-Themen 2
U Events Allgemeine Java-Themen 3
SuperSeppel13 MouseMotion Events unabhängig vom Cursor Allgemeine Java-Themen 7
M Asynchron Events verschicken... Allgemeine Java-Themen 2
S Eigene Events feuern Allgemeine Java-Themen 3
0x7F800000 Wovon eigene Events für spezialisierte JComponents ableiten? Allgemeine Java-Themen 2
O Auf alle Events reagieren Allgemeine Java-Themen 3
J OpenOffice.org Events in eigene Anwendung umleiten Allgemeine Java-Themen 4
R Events von Klasse 1 in Klasse 2 abrufen Allgemeine Java-Themen 2
N Events in Java? Allgemeine Java-Themen 6
MQue Auslösen eines Events beim Drücken eines Buttons Allgemeine Java-Themen 12
M Events im Quellcode auslösen Allgemeine Java-Themen 4
E Events von inneren Klasse abfragen Allgemeine Java-Themen 7
G BestPractice Events bündeln Allgemeine Java-Themen 2
G Events auslösen Allgemeine Java-Themen 3
G Applets und eine Welle von Repain-Events Allgemeine Java-Themen 9
Z Events Reflektieren Allgemeine Java-Themen 5
K Wenn events auftritt fireActionPerformed Allgemeine Java-Themen 6
G Events und Automatisch generierte Unterklassen! Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben