• ベストアンサー

swing初心者です

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

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

  • ベストアンサー
回答No.3

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

noname#71195
質問者

お礼

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

その他の回答 (2)

  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.2

 こんばんは。  私の環境とたぶん同じだと思うのですが、 WindowsXP SP2, java version "1.5.0_07"  アプレットビューアー、Firefox/1.5.0.8、IE6 SP2で試してみましたが、表示に問題がなく、同じ現象が再現されません。  なにが違うんでしょうかねぇ。

noname#71195
質問者

補足

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

回答No.1

Win2000,Eclipse3.1.1,J2SE 1.4.2_12 Eclipseから実行しましたが、最初からボタンが表示されました。 参考にならないかもしれませんが。

noname#71195
質問者

お礼

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

関連するQ&A