JAVAアプレットのクイズのレイアウト。
JAVAのアプレットを用いてクイズを作成しているのですが、下のソースは5問を連続で表示させるものです。
これを1問ごとに回答した後に「次の問題へ」というボタンだけ画面に切り替わり、そのボタンを押すと次の問題が出てくるようにしたいのですが、どのようにしたら良いでしょうか。
また5問終わったら、「もう一度」というボタンだけの画面に切り替わり、そのボタンを押すと、また1問目から始まるようにしたいのですが、どのようにしたら良いでしょうか。
どちらかだけでもいいので、教えてもらえないでしょうか。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class kake extends Applet implements ActionListener{
private Checkbox CB[];
private CheckboxGroup CBG;
private Button BT;
private Label QL, PL;
private Panel P1, P2;
private String[][] question = {
{"問題1","A","B","C","D","1"},
{"問題2","A","B","C","D","2"},
{"問題3","A","B","C","D","3"},
{"問題4","A","B","C","D","4"},
{"問題5","A","B","C","D","1"},
};
private int rightAns, count;
public void init(){
rightAns = Integer.parseInt(question[0][5]);
count = 0;
CB = new Checkbox[4];
setLayout(new GridLayout(5, 1));
CBG = new CheckboxGroup();
add(QL = new Label(question[0][0]));
add(P1 = new Panel(new GridLayout(1, 2)));
P1.add(CB[0] = new Checkbox(question[0][1], CBG, true));
P1.add(CB[1] = new Checkbox(question[0][2], CBG, false));
add(P2 = new Panel(new GridLayout(1, 2)));
P2.add(CB[2] = new Checkbox(question[0][3], CBG, false));
P2.add(CB[3] = new Checkbox(question[0][4], CBG, false));
add(BT = new Button("答える"));
BT.addActionListener(this);
BT.setActionCommand("BT");
add(PL = new Label(""));
}
public void actionPerformed(ActionEvent ae){
try{
if(ae.getActionCommand().compareTo("BT") == 0){
if(CB[rightAns].getState()){
judgement(true);
}
else{
judgement(false);
}
setQuestion();
}
}
catch(Exception e){
PL.setText(e.toString());
}
}
private void setQuestion(){
QL.setText(question[count][0]);
rightAns = Integer.parseInt(question[count][5]);
CB[0].setLabel(question[count][1]);
CB[1].setLabel(question[count][2]);
CB[2].setLabel(question[count][3]);
CB[3].setLabel(question[count][4]);
repaint();
}
private void judgement(boolean ans){
String result;
if(ans == true){
result = "正解";
}
else{
result = "不正解";
}
if(count == 9){
PL.setText(result);
}
else{
PL.setText(result);
count++;
}
}
}
お礼
回答ありがとうございます。 今日、もう一度プログラムを見直したところ、呼び出される側の ReadFile_c に、@Serviceを付け忘れていることがわかりました。 という事で、解決いたしました。 ありがとうございました。 今後ともよろしくお願いします。