Toon posts:

In een Java for loop checkbox aanmaken? :S

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik maak een java enquete die uitgelezen word uit een database. Nu zijn er ook antwoorden die bestaan uit meerkeuze of bijvoorbeeld radiobuttons. Vervolgens creeer naar aanleiding van het soort vraag een panel met de daarbijbehorende eigenschappen.

Het lukt me wel om de radiobuttons met de goede labels erbij neer te zetten. Dus de weergave op het scherm is goed. Maar doordat het me niet lukt om een checkbox te declareren met en variable naam. Kan ik niet controleren welke checkbox is aan gevinkt. Dit doet ie dus alleen bij de laatste omdat ik die als laatste heb aangemaakt. Want alle checkboxen heten dus "cb". Ik mot dus eigenlijk iedere checkbox een andere naam kunnen geven in het for loopje. Heeft iemand hier een oplossing voor?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
        if (soortVraag.equals("radiobutton"))
        {
            
            radioButtonPanel = new Panel();
            radioButtonPanel.setBounds(100,100,600,150);
            radioButtonPanel.setLayout(null);
            System.out.println(radioButtonPanel);

            
            
            CheckboxGroup cbg = new CheckboxGroup();            int y=10;
            for (int i=0; i < antwoorden.length; i++)
            {
                cb = new Checkbox(antwoorden[i], cbg, false);
                cb.setBounds(10,y,100,10);
                cb.addItemListener(this);
                radioButtonPanel.add(cb);
                y=y+25;
                
            
                 
            
            }
            add(radioButtonPanel);
            
            
            
        }

  • bwiep
  • Registratie: September 2000
  • Niet online

bwiep

Bla Bla Bla..

Je moet een array maken van de objecten :)

Dus ffe in een array al die objecten stoppen, dan kun je rechtstreeks alles aanspreken.

De reden waarom het werkt is de afhandeling van pointers binnen java.

Dus ffe omproggelen :)

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Ik heb even een kleine verbouwing gemaakt, waarbij ik hopelijk geen fouten/slechte assumptions heb gemaakt.

Zo heb ik de Checkboxes in een array gezet, zodat je ze later kan vergelijken met CheckboxGroup.getSelected(). Echter wat ook kan, en misschien wel beter is, is gewoon het label opvragen van de checkbox die je terugkreeg en die vergelijken met antwoorden[i]

Zoals je ziet heb ik ook je naamgeving aangepast. Heel fout in het nederlands, maar wel beter dan cbg en cb. Bij de declaratie wist ik nog wel dat het om een checkbox ging, maar na ff nadenken wat ik nog meer kon editten was ik het al weer een beetje kwijt. Bedenk dus zinvolle namen!

Laatste punt wat ik gewijzigd heb. De class waar deze if( ) instaat, implements een ActionListner. Hierdoor heeft hij een actionPeformed( ) enz. Echter er kunnen nog meer objecten in die classe zijn die een actionPreformed nodig hebben. Dan moet je ze gaan scheiden in je actionPreformed method.

Dat is niet zo netjes, want alles komt dan door elkaar. Wat je beter kunt doen is een apparte klasse voor elk soortgelijk object maken die ActionListner implements en die meegeven aan het object. Ik heb hier gekozen voor een inner class (classe in een classe), maar een gewone classe mag ook. Echter bij een inner class heb je voordeel dat je bij enkele variabele van de outerclass (klasse waarbinnen de innerclass staat) kunt komen en deze kunt gebruiken.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    Panel        radioButtonPanel;
    CheckboxGroup   antwoordenCheckboxGroep;
    Checkbox[]  antwoordCheckbox;

    if ( soortVraag.equals("radiobutton" )) {

      //Declaration of the variables used in this statement
      int y=10;

      //Construct and initialize the new radioButtonPanel
      radioButtonPanel = new Panel();
      radioButtonPanel.setBounds( 100,100,600,150 );
      radioButtonPanel.setLayout( null );

      //Construct the new antwoordenCheckboxGroep
      antwoordenCheckboxGroep = new CheckboxGroup();

      //Construct the array of checkboxes that will be added to the checkboxgroup
      antwoordCheckbox[] = new Checkbox[ antwoorden.length ];

      for (int i=0; i < antwoorden.length; i++) {

        antwoordCheckbox[i] = new Checkbox(antwoorden[i], antwoordenCheckboxGroep, false);
        antwoordCheckbox[i].setBounds(10,y,100,10);
        antwoordCheckbox[i].addItemListener( new antwoordenCheckboxListner() );

        radioButtonPanel.add( antwoordCheckbox[i] );
        y+=25;
      }

      add(radioButtonPanel);
    }
    }//end of method

    private class antwoordenCheckboxListner implements ActionListner {

      public void actionPerformed( ActionEvent event {
        //doe iets
      }
    }

Verwijderd

Topicstarter
Ok thx zo kan je dus wel een variabele naam aan je Checkbox geven door ze in een array te gooien. Nu kan ik tenmminste zien welke Checkbox ik aangeklikt heb. :P

Bedankt! ;)