# Schleife mit Button abbrechen



## mbX (18. Okt 2007)

Ich habe eine while Schleife, die eigentlich endlos rennt, bis ein Button gedrückt wird .. Und genau das ist mein Problem .. 

Ich weiß nicht, wie ich das hinkriegen soll .. 

Ich habe die Schleife in der ActionPerformed unter einem Button (Start Button) und dann soll sie laufen bis der Stop Button gedrückt wird .. Hab schon viel probiert, doch ich weiß nicht genau, wo ich die 
	
	
	
	





```
if (ae.getSource() == stop)
```
 Abfrage hinschreiben soll .. 

Danke für die Hilfe, 
lG[/code]


----------



## Ariol (18. Okt 2007)

```
boolean run = true;

Thread t = new Thread(new Runnable()
       {
            public void run()
           {
                while (run) 
               {
                   System.out.println("Renn...");  // Schleife in eigenen Thread
               }
               run = true;
           }
       }); 

start.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				t.start();
			}
			
		});
stop.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				run = false;
			}
			
		});
```

@Marco: Hast ja recht, dafür fehlt in deiner Version der Start-Button ;p

Was hältsten davon?


----------



## Marco13 (18. Okt 2007)

Davon ausgehehnd, dass die Schleife in einem einenen Thread läuft, ist das ganz einfach

```
class XXX
{
    private boolean stopped = false;

    public void foo()  
    {
        Thread t = new Thread(new Runnable() {
            public void run() {
                while (!stopped) { System.out.println("Renn..."); }  // Schleife in eigenen Thread
           }
       });
       t.start();
    }

    public void actionPerformed(ActionEvent e)
    {
        if (richtigerButtonUndSo) stopped = true;
    }
}
```


----------



## Marco13 (18. Okt 2007)

Ariol hat gesagt.:
			
		

> Ist nur ne 2Minuten-nachgedacht-Lösung, aber sollte gehen ^^


Da hat noch die eine Minute gefehlt, in der mir dann sozusagen eingefallen ist, dass man sich mit dem "start" ja den EDT blockieren würde.... :wink:


----------



## Ariol (18. Okt 2007)

Ups, ich hab versehentlich meinen vorherigen Beitrag editiert.
Wollte eigentlich nen neuen!
s.o.!!!


----------

