Pause Button, aber wie?!

altsuh

Grünschnabel
hi,
ich möchte in meinem Programm ein Pause Button haben um eine Berechnung stoppen zu können.
Das Problem was ich habe ist folgendes: Wenn ich auf mein Button drücken möchte, dann friert das Programm ein weil es wie bekloppt am rechnen ist im Hintergrund. Es reagiert also nicht auf mein Mausklick.
Wie kann ich machen, dass es funktioniert?
Ich hab eine GUI.java und eine berechnen.java wo mein Algorithmus etwas berechnet.
Sobald ich die Berechnung starte kann ich wie gesagt nichts anklicken auf der GUI....
 
Threads sind da der richtige Ansatz. Deine Oberfläche wird im Hauptthread immer wieder neu gezeichnet und kann nur auf Aktionen reagieren wenn der Hauptthread frei ist. Wenn du eine Berechnung in eben diesem Hauptthread durchführst, reagiert deine Oberfläche nicht mehr.

Ist deine Oberfläche mit Swing programmiert? Dann könntest du die Klasse SwingWorker verwenden, um deine Berechnung "im Hintergrund" ausführen zu lassen.
 
Wie Thread funktionieren weiß ich noch nicht genau, ich gucke mir das grad an.

Ich benutze SWT in der GUI mit Visual Editor.

Wie sollte eigentlich meine GUI aussehen vom Aufbau her? Ich habs mit VE begonnen und ich hab nicht mal ne main Methode in der Klasse, kann es aber kompilieren und starten .... Ich hab im Prinzip nur eine createsShell Methode, mehr nicht. Ich versuche das irgendwie umzubauen aber es funktioniert nicht.
Ich möchte das von einer Main Klasse aus starten, wie mach ich das? Ich habs zur Zeit so:

PHP:
public class Main {
	public static void main(String[] args) {
		GUI g = new GUI();
		g.start();		
	}	
}

GUI sieht in etwa so aus:
PHP:
public class GUI extends Thread{
...
	private void createSShell() { .... }
	public void run(){
		createSShell();
	}
}

Ich hab übrigends auch kein Display ... also ich hab nur ne Shell und baue alles darauf auf.
Kann man das machen? Wofür braucht man Display überhaupt?
Das Programm funktioniert eigentlich soweit auch so ^^

Sry für die ganzen fragen aber ich bin sehr neu was GUI Programmierung angeht.
 
Zurück