Endlosschleife auf JButton druck beenden

rufux

Mitglied
Huhu erstmal,

bin neu hier im Forum und werde ab sofort auch öfters hier anzutreffen sein :)

Habe nach Jahren mal wieder angefangen ein wenig zu programmieren.

Programmiere gerade ein kleines Tool für meine Bildersammlung.
Im Prinzip: scanne ich meine Bilder mit der Klasse Robot auf bestimmte Farben,was soweit auch funktioniert.

Nun habe ich das in einer Endlosschleife laufen, da ich das ganze bei einer Diashow mache. (Was bei 10000 Bildern einfach schneller geht) ;)

Nun habe ich mir nen kleines Fenster gebaut mit zwei Buttons... Grundsätzlich start und stop.

start funktioniert auch ohne Probleme.
aber ich schaffe es nicht mit dem stop Button zu beenden?

wie kann ich da am besten rangehen.
In diversen anderen Programmiersprachen würde ich mit Interupts arbeiten, aber das geht ja leider nicht?

Need Help.
Danke
 

diggaa1984

Top Contributor
das simpelste wäre mit sicherheit ne boolsche variabel, die solange sie aktiv ist die endlosschleife aktiv hält .. stellst du sie per button auf false beendet sich die geschichte nach dem letzten durchlauf einfach. Aber dazu ist eventuell mehr Code nötig, um spezifischere lösungen angeben zu können
 
T

Tomate_Salat

Gast
Wenn es in einem eigenen Thread läuft, könntest du mit interupt arbeiten. Du könntest aber auch einfach ein flag setzen, welches du in der Schleife prüfts, wenn diese false ist, dann führst du keinen weiteren durchlauf durch und bist raus.
 

rufux

Mitglied
Das mit dem Flag habe ich mir auch schon überlegt.

Also ich habe eine Klasse mit zwei funktionen: erkennung (func: started / stoped)
Started macht im prinzip nichts anderes als das Bild nach bestimmten Pixelwerten hin zu untersuchen.
Das ganze habe ich dann in einer do-while Schleife...

also
Code:
int i = 0;

do{
...
}while(i!=1}
habe dann eine Funktion in der Klasse:

Code:
public static void stoped(){
i=1;
}

So nun habe ich eine Klasse AppWindow mit meinen Buttons und unter anderem die beiden Funktionen:

Code:
public void buttonStartclicked(){
erkennung.started();
}

public void buttonStopClicked(){
erkennung.stoped()}

so sieht es im Moment aus.

wenn ich den start Button klicke bleibt der auch aktiv?
weiß nicht weiter.
Vielleicht könnt Ihr mir helfen.

VG
 

diggaa1984

Top Contributor
was genau ist erkennung und wie sieht der code sonst noch aus?

generell sollte das sowas werden:
Java:
public class XY implements Runnable {

    boolean keepRunning = true;

    public void run() {
        while (keepRunning) {
            ...
        }
    }

    //wird von aussen aufgerufen
    public void stopExecution() {
        keepRunning = false;
    }
}

das ganze wäre quasi ein extra Thread der solange läuft bis du ihn stoppst, oder er irgendwie unterbrochen wird.
 

rufux

Mitglied
Also so ähnlich hatte ich es auch, halt mit ner int variablen...
aber das geht auch nicht!

habs jez so...
Java:
public class erkennung implements Runnable{
static boolean i=true;

public static void started(Strings[] args) throws AWTException{
Robot robot = new Robot();
do
Color pixel = new Color(0,0,0);
Color white = new Color(255,255,255);
...


pixel = robot.getPixelColor(x,y);

...

if(white.equals(pixel){
System.out.println("white");
}....
else{
System.out.println("no saved color");
}
while(i);
System.out.println("end");

....
}

public static void stoped(){
i=false;
}


da der gesamte Code zu lang wäre nur ein Auszug mit allein wichtigen Sachen...

Der JButton Aufruf funktioniert wie folgt:
Java:
JButton start = new JButton("start");
start.addActionListener (new ActionListener(){
 public void actionPerformed(ActionEvent arg0){
  buttonStartClicked();}});

dazu natürlich noch der stop Button.. gleiche Syntax nur mit stop.

Die Funktionen:

Java:
public void buttonStopClicked(){
ekennung.stoped();
}

public void buttonStartClicked(){
erkennung.started();
}

aber so funktioniert es leider immer noch nicht

Edit: also das starten klappt/ beenden leider nicht
 
Zuletzt bearbeitet:

Shulyn

Bekanntes Mitglied
Kann es sein das die ActionListener und die Endlosschleife im selben Thread arbeiten? Starte die Endlos Action in einem eigenen Thread. Dann sollte es klappen.

Java:
EndlosAction meineAction = new EndlosAction();

Java:
public void buttonStartClicked(){
meineAction.run();
}
public void buttonStopClicked(){
meineAction.stop();
}
 
Zuletzt bearbeitet:

rufux

Mitglied
Bin leider nicht so versiert im Umgang mit Java..

Wann laufen denn beide Befehle im selben Thread...

habe das jetzt imo so:

[Java]

public class AppWindow extends JFrame{
Erkennung erkennung = new Erkennung();

public AppWindow(){
...
}

protected void initWindow(){
...

// hier ist auch der ActionListener drin
}
public void buttonStopClicked(){
erkennung.stoped();
}

public void buttonStartClicked(){
erkennung.started();
}
[/Java]
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
das ding ist, wenn du schon Runnable implementierst, dann schieb die komplette Endlosschleife und alles was du da für berechnungen brauchst in die run-Methode!

beim druck auf startbutton dann einfach

Java:
new Thread(new Erkennung()).start()

wenn mich mein gedächtnis nicht grad ganz verlässt
 

jwiesmann

Bekanntes Mitglied
Hier eine weitere Alternative: Swingworker
Beispiel:
Java:
WorkForMe workForMe=null;

    class WorkForMe extends SwingWorker<Object, Object> {

            @Override
            protected Object doInBackground() throws Exception {                
                // mach was .. labels aktualisieren funktioniert hier auch ;)
                return null;
            }

            @Override
            protected void done() {
               // fertig
            }
        }
public void buttonStopClicked(){
        workForMe.cancel(true);
}
 
public void buttonStartClicked(){
    workForMe = new WorkForMe();
     workForMe.execute();
}

gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L JavaFX TreeView aufstellen läuft irgendwie auf Endlosschleife AWT, Swing, JavaFX & SWT 3
N Swing Endlosschleife blockt Frame AWT, Swing, JavaFX & SWT 11
C Endlosschleife AWT, Swing, JavaFX & SWT 4
S Live Ticker "Endlosschleife" AWT, Swing, JavaFX & SWT 10
E Endlosschleife bei anklickbarer Fläche AWT, Swing, JavaFX & SWT 2
S Objekt wird während Endlosschleife nur einmal bewegt AWT, Swing, JavaFX & SWT 2
R [gelöst]Fenster schließen - trotz Endlosschleife in der Paint-Methode? AWT, Swing, JavaFX & SWT 3
G Checkbox, die eine Endlosschleife ausführt AWT, Swing, JavaFX & SWT 3
G Endlosschleife bei paint() + setBackground() AWT, Swing, JavaFX & SWT 2
F Endlosschleife bei drawImage() AWT, Swing, JavaFX & SWT 4
K JComboBox: Endlosschleife durch Events AWT, Swing, JavaFX & SWT 4
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
B JButton Search AWT, Swing, JavaFX & SWT 8
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Swing Kann man auf JButton zeichenen AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A Swing JButton mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 6
F Swing Scrollbare Liste von JButton AWT, Swing, JavaFX & SWT 4
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
A Swing JButton aussehen AWT, Swing, JavaFX & SWT 12
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
C Swing JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
stylegangsta MouseEvents aus JButton aufrufen AWT, Swing, JavaFX & SWT 3
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
M JButton - Listener AWT, Swing, JavaFX & SWT 1
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
S Swing Rückmeldung für JButton AWT, Swing, JavaFX & SWT 4
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
U Event Handling JButton Actionevent: starte Spiel AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben