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++;
}
}
}
No.4ベストアンサー
- 回答日時:
add(BT = new Button("…"));
だと、Appletに追加してません?パネルに追加するのではないですか?
パネルを削除してとありますが、
パネルを削除した後に違うパネルを追加するのを忘れてませんか?
あと、いちいちパネルを削除したりするのではなく、
CardLayout
という切り替えられるレイアウトマネージャがありますので、
そちらを使うのも一考かもしれません。
ご回答ありがとうございます。
またお礼が遅くなってしまいすいません。
パネルに新しいボタンとして追加したいです。
私の考えとして、一度initメソッドで作ったパネルをすべてなくして、新しくパネルを追加する操作を行いたいのですが、前の書いた操作では間違っているのでしょうか。
また質問してしまいすいません。
No.3
- 回答日時:
ごめんなさい。
追加してました。No.1
- 回答日時:
>どのようにしたら良いでしょうか。
って言われても
>これを1問ごとに回答した後に「次の問題へ」というボタンだけ画面に切り替わり、そのボタンを押すと次の問題が出てくるようにしたいのですが、
って言うんだから、↑のようにしたらいいと思いますよ。
いきなりどうするかを聞くんじゃなくて、
自分なりにやってから、○○なると思ったけど、××になりました。
△△と□□は試しましたが、◎◎と●●になりました。
って感じで質問しましょう。
やりたいけど、できない、どうすればいい?
じゃいつまでたっても自分の作りたいものが作れませんよ。
質問の仕方が悪くてすいません。
自分なりに試したのはinitメソッドで指定したパネルをremoveで消し、新しくボタンを設定し、if文でボタンが押されたときに、setQuestionメソッドを呼び出す、というメソッドを作り、そのメソッドを利用して解決しようと思いました。
実際にはこのような感じです。
private void AA(){
remove(PL);
remove(QL);
remove(P1);
remove(P2);
remove(BT);
add(BT = new Button("次の問題へ"));
}
しかし、このメソッドを呼び出しても、「次の問題へ」というボタンが出てきませんでした・・。
どうか教えてもらえないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルエラー <identifier...
-
VB6.0でのTextboxの高さ変更
-
Enterキーでボタンを押すにはど...
-
JPanelの切り替えと再描画
-
javaで文字数制限するには?
-
java junit list同士の比較方法
-
JFrameとJPanelの最大化について
-
ボタンクリック後パネルを再描...
-
4択クイズでのランダム出題の...
-
VBAの繰り返し処理表記と複数の...
-
JTable の 列幅を個別に設定す...
-
ArrayListの使い方について(初...
-
タスクトレイのメニュからウィ...
-
エラーで式の開始が不正ですと...
-
【Swing】JPanel クラス外から...
-
C言語のポインターに関する警告
-
ジャバスクリプトについて。
-
System.err. printlnとSystem.o...
-
1~100までの数字を表示し、か...
-
javaで質問です。 文字列2023/2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
EXECLの行を削除
-
JPanelの切り替えと再描画
-
TextAreaでの文字の色
-
最後の行に移動するには?
-
コンパイルエラー <identifier...
-
連番をオブジェクト名の最後に...
-
JDialogを閉じた時の処理
-
JPanelの重ね方/OverlayLayout他
-
JTableの列ヘッダ
-
ボタンクリック後パネルを再描...
-
【Swing】JPanel クラス外から...
-
4択クイズでのランダム出題の...
-
次のように書いたのですが、ウ...
-
エラーで式の開始が不正ですと...
-
KeyListenerの使い方について
-
JavaでのSwingを使った簡易電卓...
-
あるコンボボックスを選択する...
-
ArrayListの使い方について(初...
-
VB6.0でのTextboxの高さ変更
おすすめ情報