- 締切済み
applet スタートボタンを何回押しても動く方法
このプログラムは1回しか動きません。いつでも動く方法を探しています。よろしくお願いします。 public void start() { if (main_th == null) { main_th = new Thread(this); // スレッド作成 } } public void run() { if (q_choice.getSelectedIndex() == 0){ // 問題判定(指定された項目に一致する、リスト内の最初の項目を返します。) q_data = q_data1; mon = q_data1.length; } else { q_data = q_data2; mon = q_data2.length; } for (int i = 3; i > 0; i--) { // カウントダウン question.setText(""+i); try { main_th.sleep(1000); //ミリ秒数の間一時停止させる。 } catch(InterruptedException e) {} } time = itime = 60; // 時間設定 pt = 0; // 点数初期化 m = (int)(mon * Math.random()); // 1問目の問題決定 ランダムで question.setText(q_data[m]); question.setBackground(new Color(250,128,114)); // 背景色設定 stat.setBackground(new Color(0,206,209)); chk[m] = 1; // 問題のフラグを立てる while(time != 0) { // 問題をまわす if(q_data[m].equals(answer.getText())) { pt += (int)(10000 / (itime - time)); // 点数算出 while(chk[m] != 0) { m = (int)(mon * Math.random()); } chk[m] = 1; question.setText(q_data[m]); //answer.setFont(new Font("MS ゴシック",Font.BOLD,24)); answer.setText(""); itime = time; } time--; // 時間を減らす try { main_th.sleep(10); } catch(InterruptedException e) {} stat.setText("残り時間 : "+(time/10)+"."+(time%10)+"秒 点数a:"+pt+"点"); } question.setText("終了です!お疲れ様でした!"); stat.setText("Time Over! 点数:"+pt+"点"); } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- _ranco_
- ベストアンサー率58% (126/214)
現在のrun()メソッド内で行われている処理の実行中に、ほかの処理やほかのユーザ操作、ユーザ対応がなにもないのなら、Threadを作る必要性はありません。処理内容をそのまま、start()メソッドの中に書いてください。 何度でも実行できるためには、[もう一度]ボタンなどを設けて、そのActionListenerのactionPerformed()メソッドの中で、start()メソッドをコールしてください。