このブログを検索

2019年9月14日土曜日

アホ男子のための 学習プログラム (作成中) ③

「アホ男子のための 学習プログラム」

 正誤をテキストフィールドに表示。
 スレッドを少しだけ止めるメソッドを使うことにより、
 タイムラグを作りました。



 
⭐️ テキストフィールドに 正誤を表示。

//◯問題を表示させるためのclassを作成
//◯問題を表示させる
//◯ボタンを反応させる
//◯合っているかどうかの確認
import java.awt.*;
import java.awt.event.*;
class Awt8{
    public static void main(String[] args){
        MyWindow mw = new MyWindow();
    }
}

class Prob{ //このクラスで問題(String)と答え(int)を代入する。
    static int count; //いくつかの問題を出す為(確認用 count)
    String problem;
    int ans;
    Prob(String problem, int ans){
        this.problem = problem;
        this.ans = ans;
        count++;
    }
}

class MyWindow extends Frame implements ActionListener{
    Prob pro1;
    TextField tf;
    Button btn;
    MyWindow(){
        pro1 = new Prob("鎌倉幕府の成立は", 1185);
        setTitle("問題集");
        setSize(640, 400);
        setLayout(null); //レイアウトの解除
        tf = new TextField(20); //テキストフィールドのインスタンスの作成
        tf.setBounds(80, 300, 370, 30); //x,t 大きさx,y
        add(tf); //テキストフィールドの配置
        btn = new Button(); //ボタンのインスタンスの作成
        btn.addActionListener(this);
        btn.setLabel("回答");
        btn.setBounds(480, 300, 100, 35); //x,t 大きさx,y
        add(btn);//ボタンの配置
        setVisible(true);
        addWindowListener( new WinListener() );
    }
    
    public void paint(Graphics g){
        Font font1 = new Font("MS Pゴシック",Font.PLAIN,35);
        g.setFont(font1);
        g.setColor(Color.DARK_GRAY);
        g.drawString(pro1.problem, 80, 130);
    }
    
    public void actionPerformed(ActionEvent e){
        if(e.getSource() == btn) judgment();
    }
    
    void judgment(){
        String str = tf.getText();
        int num = 0;
        try{
            num = Integer.parseInt(str);
        }
        catch(Exception e){
            System.out.println(e); //後に消去
        }
        System.out.println(num); //試験用 入力した数値を 表示
        if (pro1.ans == num){
            stop(2000);
            tf.setText(num + "  正解だよ!!");
        }
        else if(num == 0){ //numに数値が入力されなかった場合。
            stop(2000);
            tf.setText(str + " 半角数値で入力してね。");
        }
        else{
            stop(2000);
            tf.setText(num + " はまちがい 正解は " + pro1.ans + " だよ。");
        }
    }
   
    public void stop(int times){ //時間を止めるメソッド
        try{ Thread.sleep(times); } catch(Exception e) {}
    }
}

class WinListener extends WindowAdapter{
    public void windowClosing(WindowEvent e){System.exit(0);}

}


次の問題を表示する際、
テキストフィールドを消去、次の問題を表示するために、
ボタンを「次の問題」に変えてみよう。

今日の教訓
 ボタンのラベルを変えて、色々な機能を持たせるためには。。。
 (考え中)

0 件のコメント:

コメントを投稿