質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

解決済

2回答

6200閲覧

JavaのSwingによるクイズアプリケーションの作成

yx18kuzAoF

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

0クリップ

投稿2016/10/11 08:09

###前提・実現したいこと。
JavaのSwingでクイズゲームを作成しています。作成しているクイズゲームは5問の問題と解答を配列に入れて、1問ごとに正誤を知らせるメッセージと正解率を表示させるアプリケーションです。
###発生している問題・エラーメッセージ
正誤の判定が上手くいきません。
○×ボタンを押しても、次の問題へ進みません。

ここに言語を入力
Java
こご自身が実行したソースコードを書いてください

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Sample1 extends JApplet { private JLabel[] lb = new JLabel[5];//問題文を表示する。 private JLabel[] tmp = new JLabel[5];//正誤と正解率を表示する。 private JButton bt1,bt2;//○×ボタンを作成。 private String[][] question = {{"○","問題:クラスはフィールドとメソッドをもつことができる。"}, {"×","問題:メソッドは2つ以上の戻り値をもつことができる。"}, {"×","問題:クラス変数には、オブジェクトが作成されていないとアクセスできない。"}, {"○","問題:サブクラスは、スーパクラスと同じパッケージを含めなくてよい。"}, {"×","問題:スレッドを一時停止するには、stop()メソッドを呼び出す。"} };//解答と問題を格納する配列; int count = 0;//何問終わったかを数える変数。 int right = 0;//正解数を格納する変数 public void init(){ for(int i = 0; i < 5; i++){ lb[i] = new JLabel(question[i][1]); tmp[i] = new JLabel(); } bt1 = new JButton("○"); bt2 = new JButton("×"); add(lb[0],BorderLayout.NORTH); add(tmp[0],BorderLayout.CENTER); add(bt1,BorderLayout.WEST); add(bt2,BorderLayout.EAST); bt1.addActionListener(new SampleActionListener()); bt2.addActionListener(new SampleActionListener()); } class SampleActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == question[count][0]){ right++; tmp[count].setText("正解です。点数:"+ right +"/"+ (count+1)); } else{ tmp[count].setText("不正解です。点数:"+ right +"/"+ (count+1)); } count++; } } }

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

java-beginnerさんの言うとおり、actionPerformedを追加していないからですね。

投稿2016/10/15 03:23

asadako

総合スコア147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

actionPerformedに次の問題を表示する処理を記述していないからです。

以下は1秒後に次の問題を表示する一例です。

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JLabel; public class Sample1 extends JApplet { private JLabel lb = new JLabel(); // ★ private JLabel tmp = new JLabel(); // ★ private JButton bt1,bt2;//○×ボタンを作成。 private String[][] question = {{"○","問題:クラスはフィールドとメソッドをもつことができる。"}, {"×","問題:メソッドは2つ以上の戻り値をもつことができる。"}, {"×","問題:クラス変数には、オブジェクトが作成されていないとアクセスできない。"}, {"○","問題:サブクラスは、スーパクラスと同じパッケージを含めなくてよい。"}, {"×","問題:スレッドを一時停止するには、stop()メソッドを呼び出す。"} };//解答と問題を格納する配列; int count = 0;//何問終わったかを数える変数。 int right = 0;//正解数を格納する変数 public void init(){ bt1 = new JButton("○"); bt2 = new JButton("×"); add(lb,BorderLayout.NORTH); // ★ add(tmp,BorderLayout.CENTER); // ★ add(bt1,BorderLayout.WEST); add(bt2,BorderLayout.EAST); bt1.addActionListener(new SampleActionListener()); bt2.addActionListener(new SampleActionListener()); // ★問題表示 showProblem(); } // ★問題表示メソッド private void showProblem() { lb.setText(question[count][1]); tmp.setText(""); } class SampleActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == question[count][0]){ right++; tmp.setText("正解です。点数:"+ right +"/"+ (count+1)); } else{ tmp.setText("不正解です。点数:"+ right +"/"+ (count+1)); } count++; // ★次の問題呼び出し Thread t = new Thread(() -> { try { Thread.sleep(1000); } catch (Exception e1) { e1.printStackTrace(); } showProblem(); }); t.start(); } } }

投稿2016/10/11 09:30

java-beginner

総合スコア452

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問