[java] wachten op knopkeuze

Pagina: 1
Acties:

  • ruuds
  • Registratie: Maart 2001
  • Laatst online: 19-08 16:21
Ik heb in java een message-windoowtje gemaakt. De klasse wordt 1x aangemaakt en door middel van een functie (waar tekst wordt meegegeven) gestart. Er staan twee knoppen op de window, en het window mag zich pas sluiten als er een van de twee gekozen is.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    public boolean vraagBevestiging(String vraag)
    {
        returnStatus = 0;
        lblBericht.setText(vraag);
        bevestig.setVisible(true);

        while( returnStatus == 0 )
        {
        }

        bevestig.setVisible(false);

        if( returnStatus == 1 )
        {
            return true;
        }
        else
        {
            return false;
        }
    }


Dé functie...
Maar zolang hij in de while loop zit, kan er niet op een knop gedrukt worden...
Hoe omzeil ik dit probleem zonder evt gebruik van threads te maken?

Alvast bedankt!

(returnStatus wordt dus op 1 of 2 gezet door een actionlistener op de knoppen, en bevestig is het window waarin de zaak wordt afgebeeld)

  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 21-08 10:54
Functie in 2-en splitsen en de 2e helft (die de werkelijke boolean returnt) door je actionlistener als callback laten aanroepen...

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je moet gebruik maken van een Modal Dialoog.. Zoek maar op het forum van Swing of anders in je javadocumentatie.

[edit]
http://java.sun.com/j2se/.../javax/swing/JDialog.html

jij ff geluk ;) Check de constructors.

[ Voor 35% gewijzigd door Alarmnummer op 04-06-2003 11:51 ]


  • ruuds
  • Registratie: Maart 2001
  • Laatst online: 19-08 16:21
GarBaGe schreef op 04 June 2003 @ 11:44:
Functie in 2-en splitsen en de 2e helft (die de werkelijke boolean returnt) door je actionlistener als callback laten aanroepen...
Dat kan niet, want ik moet wachten totdat er een knop is gekozen... Ook als ik in de aanroeper van dat message-windoowtje de waarde van returnStatus opvraag en dit blijf herhalen tot ie 1 of 2 is werkt het ook niet, omdat ie wacht tot de while loop klaar is.
Alarmnummer schreef op 04 June 2003 @ 11:50:
Je moet gebruik maken van een Modal Dialoog.. Zoek maar op het forum van Swing of anders in je javadocumentatie.

[edit]
http://java.sun.com/j2se/.../javax/swing/JDialog.html

jij ff geluk ;) Check de constructors.
ik gebruik geen swing... en ik heb ook niet echt zin om alles om te zetten naar swing, of dat erdoorheen te gebruiken (heb nog maar n week voor de toetsweek en moet nogal veel doen....)

Waarschijnlijk kan ik het wel maken door de klasse waar die op een knop wacht in een aparte thread ofzo te laten lopen (?)

ja, dit is pas mn eerste jaar dat ik java krijg op school O-)

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 23:54
Start een apparte thread waarin je via een monitor lock wacht totdat je verder kan (je bent nl nu busy-waiting) :)

Maar goed, ik begrijp dat je AWT gebruikt? Daar heb je ook een modal Dialog :)

Verwijderd

Gewoon Dialog met de modal constructor. Roep show() aan om je programma te laten wachten tot er op het dialoog weer hide() wordt aangeroepen (dus zorgen dat dat gebeurd als er op een button wordt geclicked).

[ Voor 11% gewijzigd door Verwijderd op 04-06-2003 23:39 ]


Verwijderd

whoops, quote ipv edit, dan nog maar even voorbeeldje erin stoppen

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyDialog extends Dialog implements ActionListener
{
 private boolean mOK = false;
 
 // je constructor doet geen show() of setVisible();
 // en dan zoiets voor het wachten en checken welke button is geclicked
 public boolean doModal()
 {
    this.show();
    return mOK;
 }


// actionlistener methodes voor de buttons
// zet mOK goed en doe this.hide()
}

[ Voor 75% gewijzigd door Verwijderd op 04-06-2003 23:42 ]

Pagina: 1