Button während Thread aktiv ist disablen

xadoX

Aktives Mitglied
Hey Leute,

hab folgenden Code:

Java:
        Thread thread = new Thread(new Runnable() {
            public void run() {                
                verwaltung.getCategories();
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        verwaltung.getCategories2CS();
                        SwingUtilities.invokeLater(new Runnable() {
                            @Override
                            public void run() {
                                verwaltung.getAttributesCS();                              
                            }
                        });
                    }
                });
            }
        });        
        thread.start();
        while(thread.isAlive()){}
        jButtonOKProduktionsDaten.setEnabled(true);

Gewünscht ist, dass sobald der thread gestartet wird, der Button "jButtonOKProduktionsDaten" disabled wird und erst nach Beendung des Threads wieder enabled wird. Leider klappt das mit dem obigen Code nicht. Er bleibt die ganze Zeit sichtbar...
 
Zuletzt bearbeitet:
S

SlaterB

Gast
ein Schleife über die ganze Laufzeit ist doch Quatsch,
wozu überhaupt die Aktion nebenläufig ausführen wenn du den Aufrufer die ganze Zeit warten läßt?
der abschließende setEnabled(true);-Aufruf gehört an das Ende der run-Methode des Threads
 

Michael...

Top Contributor
Leider klappt das mit dem obigen Code nicht. Er bleibt die ganze Zeit sichtbar...
Steht ja auch nirgends was von setEnabled(false) ;-)
Was soll das mit dem invokeLater in invokeLater ?

Java:
new Thread(new Runnable() {
    public void run() {
        button.setEnabled(false);
        doWhatEverHasToBeDone();
        button.setEnabled(true);
    }
}).start();
 

xadoX

Aktives Mitglied
Habs jetzt so und der Button wird zwar für ein paar Sekunden disabled, doch bevor alle anderen Methoden abgelaufen sind, ist er schon wieder enabled. Er soll aber so lange disabled sein, bis die drei Funktionen fertig sind.

Java:
Thread thread = new Thread(new Runnable() {
            public void run() {
                jButtonOKProduktionsDaten.setEnabled(false);
                verwaltung.getCategories();
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        verwaltung.getCategories2CS();
                        SwingUtilities.invokeLater(new Runnable() {
                            @Override
                            public void run() {
                                verwaltung.getAttributesCS();                             
                            }
                        });
                    }
                });
                jButtonOKProduktionsDaten.setEnabled(true);
            }
        });        
        thread.start();
 

xadoX

Aktives Mitglied
Doch, ich hab doch ganz am Anfang der run() den Aufruf den Button zu deaktivieren und am Ende ihn wieder zu aktivieren?
 

TR

Aktives Mitglied
was wird in
Code:
verwaltung.getCategories2CS()
und
Code:
verwaltung.getAttributesCS()
gemacht?

dein
Code:
jButtonOKProduktionsDaten.setEnabled(true);
muss momentan gleich nach
Code:
verwaltung.getAttributesCS()
aufgerufen werden.
 

xadoX

Aktives Mitglied
In diesen Methoden werden u.a. Icons in eine JTable gesetzt. Damit diese Haken nacheinander gesetzt werden und nicht erst ganz am Ende, habe ich das mit invokeLater gemacht.
 
S

SlaterB

Gast
wenn die run-Methode von Zeile 11 im Posting von 15:36 am längsten läuft, dann muss dort eben der Befehl hin,
aber grundsätzlich widerspricht es dem Sinn der Sache, in invokeLater längerfristige Aktionen auszuführen,
auch dann die Frage: wozu überhaupt nebenläufige Threads?
 

xadoX

Aktives Mitglied
Ok, scheinbar wußte ich nicht genau was invokelater macht. Habs jetzt so gelöst wie von euch gepostet:

Java:
Thread thread = new Thread(new Runnable() {
            public void run() {
                jButtonOKProduktionsDaten.setEnabled(false);
                verwaltung.getCategories();
                verwaltung.getCategories2CS();
                verwaltung.getAttributesCS();
                verwaltung.getAttributesXLS();
                verwaltung.getXTHersteller();
                verwaltung.getShopAttribute();
                verwaltung.getShopKategorien();                
                jButtonOKProduktionsDaten.setEnabled(true);
            }
        });        
        thread.start();

Danke, klappt wunderbar.
 

tfa

Top Contributor
Vergiss das mit dem invokeLater und nimm lieber einen SwingWorker. Das verursacht auch gleich weniger Probleme mit Threading.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M JavaFX Button mit mehreren Aktionen? Allgemeine Java-Themen 7
G Drop down Button Menü (Combobox) Allgemeine Java-Themen 7
E Swing Buttons auf knopfdruck(anderer Button) erstellen Allgemeine Java-Themen 6
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
4 Swing Durch klicken auf Button Labels einem Panel hinzufügen Allgemeine Java-Themen 4
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
Tacofan Button nicht mehr anklickbar machen Allgemeine Java-Themen 8
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
J Java eigenen Button programmieren (ob Cursor im Rechteck ist oder nicht..../button pressed or not) Allgemeine Java-Themen 6
F Klassen Klasse bei Button klick öffnen Allgemeine Java-Themen 11
J JScrollPane und Button erscheinen nicht Allgemeine Java-Themen 13
L Label- & Textfelderzeugung durch Button Allgemeine Java-Themen 1
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
B Button im Web klicken Allgemeine Java-Themen 4
C Java Excel Button Allgemeine Java-Themen 2
J Swing Eigenes Button-design Allgemeine Java-Themen 2
H WAV abspielen nach Button-Klick Allgemeine Java-Themen 4
G Button-Registrierung beim ActionListener erst NACH Tastendruck Allgemeine Java-Themen 2
M JavaFX-Gegenstück zu Swing-Button-DoClick-Methode Allgemeine Java-Themen 5
A Button drücken Allgemeine Java-Themen 3
S Thread anhalten per Button ? Allgemeine Java-Themen 3
D Dialog soll sich beim Klick auf Button schließen Allgemeine Java-Themen 8
M HTTP Selenium button klicken Allgemeine Java-Themen 2
K GUI-Button Inhalte vergleich - TicTacToe Grundriss Allgemeine Java-Themen 11
C Button geben Fehlermeldung aus Allgemeine Java-Themen 5
R Klasse über Button Event in anderer Klasse informieren Allgemeine Java-Themen 11
R [Android]Wie dynamischen Button-Feld erstellen? Allgemeine Java-Themen 3
F WebBrowser Button automatisch drücken Allgemeine Java-Themen 5
L mit Button jar.Datei öffnen? Allgemeine Java-Themen 5
1 URL mit Button öffnen Allgemeine Java-Themen 29
L Thread stoppen über Button funktioniert nicht Allgemeine Java-Themen 7
ModellbahnerTT Button mit Zahlen beschriften Allgemeine Java-Themen 1
E JTidy html "hidden" Button drücken Allgemeine Java-Themen 7
G Button-Array überschreiben und dem Container zufügen? Allgemeine Java-Themen 2
G Icon auf Button Allgemeine Java-Themen 5
N Button Allgemeine Java-Themen 3
G Schleife durch Button beenden Allgemeine Java-Themen 6
G wenn Button geklickt -> regelmäßig Aktion ausführen Allgemeine Java-Themen 7
G default button für enter taste Allgemeine Java-Themen 3
T JTabbedPane nach Button-Klick wechseln Allgemeine Java-Themen 3
E Button disablen Allgemeine Java-Themen 8
T Button Array verschieben klappt nicht. Allgemeine Java-Themen 6
T Button Action Allgemeine Java-Themen 10
G swt button Allgemeine Java-Themen 6
M Methode soll warten, bis Button gedrückt Allgemeine Java-Themen 2
P Button automatisch drücken Allgemeine Java-Themen 5
M bei Klick auf Button Datei einlesen Allgemeine Java-Themen 3
E Button mit 2zeiliger Beschriftung Allgemeine Java-Themen 3
ElViZ HTML-Button mit Java "drücken" lassen? Allgemeine Java-Themen 3
MQue Button setEnabled() Allgemeine Java-Themen 2
MQue Konzept- Frage zum Button-Aktualisieren Allgemeine Java-Themen 5
MQue Button Attribute setzen Allgemeine Java-Themen 14
MQue Button ansprechen Allgemeine Java-Themen 5
MQue Button erzeugen mit 3 Klassen Allgemeine Java-Themen 3
MQue Button mit Icon und Beschriftung Allgemeine Java-Themen 7
MQue Button Event beim drücken und beim auslassen Allgemeine Java-Themen 7
P JComponenten (Button, JSlider, usw) erweitern Allgemeine Java-Themen 12
E Button: Event auslösen Allgemeine Java-Themen 7
E Mit Button ein Fenster öffnen Allgemeine Java-Themen 4
D Cast schlägt fehl : Object[] zu Button[] Allgemeine Java-Themen 2
P invoke per button Allgemeine Java-Themen 5
D Button-Sprache und windowClosing Allgemeine Java-Themen 6
G Text und Bild/Icon im Label/Button positionieren/ausrichten Allgemeine Java-Themen 2
A Wie mach ich, das mein Button schneller reagiert. Allgemeine Java-Themen 13
D Bild per Button painten Allgemeine Java-Themen 5
V Button schließen - NullPointerException Allgemeine Java-Themen 6
H Button ist nicht ansprechbar Allgemeine Java-Themen 4
S 100 Fehler bei Button machen :) Allgemeine Java-Themen 9
G Fenster durch eigenen Button minimieren Allgemeine Java-Themen 6
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
Neumi5694 Interpreter-Fehler final Eigenschaft während Laufzeit geändert Allgemeine Java-Themen 2
Neumi5694 Compiler-Fehler Konstanten entfernen während des Kompiliervorgangs Allgemeine Java-Themen 7
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
D Erhöhung der Programmgeschwindigkeit während der Programmlaufzeit Allgemeine Java-Themen 20
T Während des Programmlaufs andere Programme ausführen Allgemeine Java-Themen 1
I NullPointer während while(){} Allgemeine Java-Themen 4
H ResourceBundle während Laufzeit bearbeiten Allgemeine Java-Themen 3
A ar während der Laufzeit überschreiben Allgemeine Java-Themen 20
M File einlesen während es beschrieben wird.. Allgemeine Java-Themen 6
X Update einer Jar während der Laufzeit Allgemeine Java-Themen 8
D MouseClickEvent während MouseDraggedEvent Allgemeine Java-Themen 7
ruutaiokwu META-INF-daten bei ungepackten library-projekten während der entwicklung mit einbeziehen...? Allgemeine Java-Themen 2
J Progress Bar während Datenbank Erstellung Allgemeine Java-Themen 2
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
X Über ArrayList iterieren, während sich diese verändert Allgemeine Java-Themen 3
H Labels erstellen während Programm läuft Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben