プロが教える店舗&オフィスのセキュリティ対策術

swingを使って簡単なアプレットを作ったのですが、ボタンの表示のタイミングが妙です。ボタンが起動時に表示されず、マウスオーバーして初めて表示されます。
import java.awt.*;
import javax.swing.*;
public class Test extends JApplet implements Runnable{
public void init(){
getContentPane().add(new JButton("START"));
new Thread(this).start();
}
public void run(){
try{
while(true){
Thread.sleep(10);
}
catch(InterruptedException ie){
ie.printStackTrace();
}
}
}
これはどうしてなのでしょうか。初歩的な質問かもしれませんが、どうかご教授お願いいたします。

環境 WindowsXP SP2, java1.5.0_07

A 回答 (3件)

public void paint(Graphics g){


  super.paint(g);//追加
}
親クラスのpaintメソッドを呼んだらちゃんと表示されましたよ。
あっ、No.1なので環境はちょっと違います。
参考になれば。
    • good
    • 0
この回答へのお礼

なるほど、親クラスのpaintメソッドですね!そういえばVC++でも同じ現象で悩んで、スーパクラスの関数呼んだら解決した、なんてことがありましたが、忘れてました。
ありがとうございました!

お礼日時:2006/11/10 23:05

 こんばんは。



 私の環境とたぶん同じだと思うのですが、

WindowsXP SP2, java version "1.5.0_07"

 アプレットビューアー、Firefox/1.5.0.8、IE6 SP2で試してみましたが、表示に問題がなく、同じ現象が再現されません。

 なにが違うんでしょうかねぇ。

この回答への補足

わざわざ調べていただいたのに申し訳ありません、paint()メソッドのオーバーライドを書き忘れていました。これが原因のようです。
import javax.swing.*;
public class Test extends JApplet implements Runnable{
...
public void paint(Graphics g){} //追加
}
awtでこれに相当するコードを書いても普通にボタンが表示されるのですが、swingだと仕様が違うのでしょうか。

補足日時:2006/11/10 21:15
    • good
    • 0

Win2000,Eclipse3.1.1,J2SE 1.4.2_12


Eclipseから実行しましたが、最初からボタンが表示されました。
参考にならないかもしれませんが。
    • good
    • 0
この回答へのお礼

ありがとうございます。もう少し調べてみます。

お礼日時:2006/11/10 21:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!