こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Javaアプレットについてですが

Javaアプレットでボタンを押したら数字が増えるものを作っているのですがどうもうまく動きません。
ソースは下の通りです。
変更しなければいけないところがあるならお願いします。

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Button;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Sample7 extends Applet implements Runnable, ActionListener
{
Button bt;
int num;

public void init()
{

bt = new Button("開始");
add(bt);
bt.addActionListener(this);

Thread th;
th = new Thread(this);
th.start();
}
public void actionPerformed(ActionEvent ae)
{
public void run()
{
try{
for(int i=0; i<11; i++){
num = i;
repaint();
Thread.sleep(1000);
}
}
catch(InterruptedException e){}
}
}
public void paint(Graphics g)
{
String str = num + "です。";
g.drawString(str, 50, 50);
}
}

投稿日時 - 2011-02-15 23:49:44

QNo.6525967

すぐに回答ほしいです

質問者が選んだベストアンサー

要は、ボタンが押されてからrun()が実行されればいいわけです。
指定された条件は満たしていると思いますが、ボタンを複数回押すと楽しいことに。

import文省略
public class Sample7 extends Applet implements Runnable, ActionListener {
int num;
public void init() {
Button bt = new Button("開始");
add(bt);
bt.addActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
new Thread(this).start();
}
public void run() {
int i=0;
while (true) {
num = ++i;
repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}
public void paint(Graphics g) { 省略 }
}

投稿日時 - 2011-02-16 23:20:16

お礼

ありがとうございます。
参考になりました。

投稿日時 - 2011-02-18 23:44:04

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

「うまく動きません」以前に、そもそもコンパイルさえできませんね。
メソッドの定義の中に他のメソッドの定義を書くことは許されていないので、まずはrun()メソッドをactionPerformed()の外に出してください。これでコンパイルして実行することができる(ただしご希望の動作とは違う)ようになります。
次に、変数numの値はボタン操作とは無関係に約1秒ごとに増えるようになっています。ボタンが押されたときにだけnumの値を増やし、画面を再描画するように直してください。
そして「ボタンを押したら数字が増える」だけなら、init()内でスレッドを作って開始する必要もないんです。

投稿日時 - 2011-02-16 00:23:58

お礼

質問への返答ありがとうございます。
できればボタンを押したら数字が1秒後とに増えるようにしたいのですが、どうしたらよろしいいでしょうか?

投稿日時 - 2011-02-16 01:17:27

あなたにオススメの質問