Avatar billede mogli Nybegynder
15. april 2002 - 17:07 Der er 2 kommentarer og
1 løsning

stoppe en forløkke

Hej allesammen

Sider her med et (måske) mindre problem.

Jeg skal have stoppet en forløkke vedr at trykke på en knap i en BGF.

Forløkken er:
for (int i = 0; i<100000; i++){
draw();
}

når denne kører kan jeg naturligt nok ikke komme til at trykke på nogen knapper, hvilket indebærer at den først reagere på tryk efter forløkken er kørt.

Hvordan kan jeg komme til at afbryde en forløkke?

MVH
Miki
Avatar billede jkrag Nybegynder
15. april 2002 - 17:20 #1
Jeg er ikke sikker på at jeg helt forstår hvad du ønsker at opnå i ovenstående for-løkke, men hvis du vil hoppe ud af sådan en undervejs, kan du bare bruge kommandoen break;
dvs.
for (int i = 0; i<100000; i++){
draw();
if (betingelseOpfyldt) {
  break;
}
}
Avatar billede carstenknudsen Nybegynder
15. april 2002 - 17:41 #2
Det er ikke noget problem at stoppe,
her er et simpelt eksempel der ligner
dit meget.
import java.awt.event.*;
import javax.swing.*;
public class Stop extends JFrame {
    private boolean stop = false;
    public Stop() {
    super( "Stop" );
    JButton stopButton = new JButton( "Stop" );
    getContentPane().add( stopButton );
    stopButton.addActionListener( new StopListener() );
    pack();
    show();
    int i;
    for (i = 0; i < 10000 && !stop; i++) {
        try { Thread.sleep( 100 ); } catch (InterruptedException ie) {}
    }
    System.out.println( i );
    System.exit( 0 );
    }
    private class StopListener implements ActionListener {
    public void actionPerformed( ActionEvent ae ) {
        stop = true;
    }
    }
    public static void main( String[] args ) {
    Stop stop = new Stop();
   
    }
}
Avatar billede carstenknudsen Nybegynder
16. april 2002 - 09:58 #3
mogli: vær opmærksom på at hvis du starter din
beregning lige efter at du har aktiveret noget i din
BGF(en start knap f.eks.) så låser du BGF'ens tråd
og din BGF vil virke låst, dvs din stop knap vil ikke
kunne aktiveres. I det filfælde skal du starte din nye
beregning i en tråd med noget der ligner:
Thread t = new Thread() {
public void run() {
for (int i = 0; i < 10000 && !stop; i++) {
...
}
}
};
t.start();
og du skal her sørge for at stop er tilgængelig for
den anonyme tråd.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester