Ik heb een vraagje..
Ik ben bezig met een vragen applet en ik zet mijn vraag in een Label en mijn antwoorden staan in Checkboxes aka RadioButtons dmv een CheckboxGroup()
De eerste vraag wordt getoond bij het opstarten van het applet en staat dus in de init()
nu heb ik ook een knop volgende op dat applet staan en als ik op de knop druk toont hij de volgende vraag en moet ook de antwoorden erbij komen maar dit werkt niet hieronder de code
die ik momenteel heb
ik probeer mijn Checkboxes te verwijderen door middel van remove()
en voeg ze dan volgens mij weer toe als ik de methode toon(vraagNr) aanroep.
Maar helaas werkt dit niet
hij toont hem wel de eerste keer maar als ik dan op volgende druk krijg ik wel vraag te zien maar nooit meer de antwoorden 
sorry voor de grote hoeveelheid code
om deze 2 delen gaat het.
code van de knop
deze code is van de methode toon(vraagNr)
Ik ben bezig met een vragen applet en ik zet mijn vraag in een Label en mijn antwoorden staan in Checkboxes aka RadioButtons dmv een CheckboxGroup()
De eerste vraag wordt getoond bij het opstarten van het applet en staat dus in de init()
nu heb ik ook een knop volgende op dat applet staan en als ik op de knop druk toont hij de volgende vraag en moet ook de antwoorden erbij komen maar dit werkt niet hieronder de code
die ik momenteel heb
ik probeer mijn Checkboxes te verwijderen door middel van remove()
en voeg ze dan volgens mij weer toe als ik de methode toon(vraagNr) aanroep.
Maar helaas werkt dit niet
Java:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
| package test; import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; import java.util.*; public class Applet1 extends Applet { int aantalAntwoorden; int vraagNr = 0; Label lblVraag; Checkbox[] ant; Vraag[] vraag; Button btnNext, btnBack; CheckboxGroup groep; Font f; public void init() { //Instellen van de achtergrond setBackground(new Color(255,255,153)); //Instellen van de layout setLayout(new GridLayout(10,2,2,2)); //Nieuwe CheckboxGroep aanmaken om de Checkboxes er te behandellen alsof ze RadioButtons zijn groep = new CheckboxGroup(); //Nieuw Lettertype f = new Font("MonoSpaced", Font.BOLD, 13); //Hier wordt het Label om de vraag te tonen aangemaakt lblVraag = new Label(); //Hier wordt de groote van de Array met vragen bepaald vraag = new Vraag[28]; //Hier wordt het lettertype van het label vastgesteld lblVraag.setFont(f); /*****************************\ | Vragen | \*****************************/ // niet relevant /*****************************\ | Antwoorden | \*****************************/ // niet relevant //Methode aanroep met vraagnummer toon(vraagNr); //Knoppen toevoegen btnNext = new Button("Volgende"); btnNext.addActionListener(new KnopHandler()); btnBack = new Button("Vorige"); btnBack.addActionListener(new KnopHandler()); add(btnNext); add(btnBack); } void toon(int vraagNr) //Deze methode toont de bijbehorende vraag en antwoorden bij het vraagNr wat wordt opgegeven op het scherm { //Hier wordt de nieuwe tekst aan het Label lblVraag toegekend lblVraag.setText(vraag[vraagNr].getVraag()); //Hier krijgt aantalAntwoorden de lengte van de ArrayList antwoorden behorende bij een bepaald vraagNr aantalAntwoorden = vraag[vraagNr].getAantalAntwoorden(); //Definieren van een Array van Checkboxes met als aantal het hiervoor aangegeven aantalAntwoorden ant = new Checkbox[aantalAntwoorden]; //Toevoegen van het Label lblVraag aan de Applet add(lblVraag); for(int i = 0; i < aantalAntwoorden; i++) //for lus om de Array van Checkboxes te vullen met alle antwoorden voor een bepaalde vraag en deze toe te voegen aan de Applet { ant[i] = new Checkbox(vraag[vraagNr].getAntwoord(i), groep, false); add(ant[i]); } } class KnopHandler implements ActionListener //Class KnopHandler wordt gebruikt om het klikken van de knoppen af te handellen { public void actionPerformed(ActionEvent e) { if(e.getSource()==btnNext) // //Try Catch toepassen op ExceptionArrayOutOfBounds // //if(vraag[vraagNr] != null) try { for (int i = 0; i < aantalAntwoorden; i++) // remove(ant[i]); ant[i] = null; //vraagNr wordt met 1 verhoogd if (vraagNr < vraag.length) vraagNr++; System.out.println(vraag[vraagNr].toString()); //toon wordt opnieuw aangeroepen met een nieuwe waarde voor vraagNr wat dus de nieuwe vraag op het scherm zet toon(vraagNr); } catch(NullPointerException exp) { Label lbl = new Label("Fout!"); add(lbl); } catch(ArrayIndexOutOfBoundsException exp) { Label lbl = new Label("Fout!"); add(lbl); } } } } class Vraag { private String vraag; private ArrayList antwoorden; private int isGoedeAntwoord; public Vraag(String vraag) //Constructor van de klasse vraag //String wordt meegegeven en opgeslagen in vraag //ook wordt hier de ArrayList antwoorden gedefinieerd { this.vraag = vraag; antwoorden = new ArrayList(); } public String getVraag() //Geeft de vraag terug als string { return vraag; } public void addAntwoord(String antwoord, boolean goed) //een antwoord toevoegen aan deze vraag { //het antwoord wordt toegevoegd aan de ArrayList() antwoord this.antwoorden.add(antwoord); if(goed) //als goed TRUE is wordt de index in isGoedeAntwoord opgeslagen isGoedeAntwoord = this.antwoorden.size()-1; } public String getAntwoord(int index) //Geeft antwoord met het aangegeven index terug { return this.antwoorden.get(index).toString(); } public int getAantalAntwoorden() //Geeft het aantal antwoorden in de ArrayList { return this.antwoorden.size(); } public int getGoedeAntwoord() //Geef indexnummer terug van goede antwoord { return isGoedeAntwoord; } } |
sorry voor de grote hoeveelheid code
om deze 2 delen gaat het.
code van de knop
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| try { for (int i = 0; i < aantalAntwoorden; i++) remove(ant[i]); //vraagNr wordt met 1 verhoogd if (vraagNr < vraag.length) vraagNr++; System.out.println(vraag[vraagNr].toString()); //toon wordt opnieuw aangeroepen met een nieuwe waarde voor vraagNr wat dus de nieuwe vraag op het scherm zet toon(vraagNr); } catch(NullPointerException exp) { Label lbl = new Label("Fout!"); add(lbl); } catch(ArrayIndexOutOfBoundsException exp) { Label lbl = new Label("Fout!"); add(lbl); } |
deze code is van de methode toon(vraagNr)
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| void toon(int vraagNr) //Deze methode toont de bijbehorende vraag en antwoorden bij het vraagNr wat wordt opgegeven op het scherm { //Hier wordt de nieuwe tekst aan het Label lblVraag toegekend lblVraag.setText(vraag[vraagNr].getVraag()); //Hier krijgt aantalAntwoorden de lengte van de ArrayList antwoorden behorende bij een bepaald vraagNr aantalAntwoorden = vraag[vraagNr].getAantalAntwoorden(); //Definieren van een Array van Checkboxes met als aantal het hiervoor aangegeven aantalAntwoorden ant = new Checkbox[aantalAntwoorden]; //Toevoegen van het Label lblVraag aan de Applet add(lblVraag); for(int i = 0; i < aantalAntwoorden; i++) //for lus om de Array van Checkboxes te vullen met alle antwoorden voor een bepaalde vraag en deze toe te voegen aan de Applet { ant[i] = new Checkbox(vraag[vraagNr].getAntwoord(i), groep, false); add(ant[i]); } } |