Hallo,
ich habe folgendes Problem: bei dem folgendem Programm hängt sich das Programm wenn man auf den Button klickt auf
Das ist ja ganz logisch, weil das Prgramm andauernt in der while-Schleife hängt. Da die while-Schleife im EDT ausgeführt wird kann man das GUI nicht mehr benutzen.
Normalerweise haut man natürlich da keine Endlosschleife rein aber bei komplexeren Funktionen kann es schon mal zu Verzögerungen kommen. Meine Frage: Wie führe ich die Endlosschleife außerhalb des EDT aus?
Mit EventQueue.invokeLater() kann ich ja ein Runnable auf den EDT schieben. Ich bräuchte jetzt also ne Funktion um wieder etwas runterzuholen.
Ich hoffe ihr könnt mir helfen!
Viele Grüße Murcer!
ich habe folgendes Problem: bei dem folgendem Programm hängt sich das Programm wenn man auf den Button klickt auf
Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable(){
@Override
public void run() {
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
JButton button = new JButton("Klick mich!");
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
while (true);
}
});
frame.add(button);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
Das ist ja ganz logisch, weil das Prgramm andauernt in der while-Schleife hängt. Da die while-Schleife im EDT ausgeführt wird kann man das GUI nicht mehr benutzen.
Normalerweise haut man natürlich da keine Endlosschleife rein aber bei komplexeren Funktionen kann es schon mal zu Verzögerungen kommen. Meine Frage: Wie führe ich die Endlosschleife außerhalb des EDT aus?
Mit EventQueue.invokeLater() kann ich ja ein Runnable auf den EDT schieben. Ich bräuchte jetzt also ne Funktion um wieder etwas runterzuholen.
Ich hoffe ihr könnt mir helfen!
Viele Grüße Murcer!