2017-09-19 5 views
0

私は実行ファイルとアプレットの理解を助けるためにhttp://www.dmc.fmph.uniba.sk/public_html/doc/Java/ch10.htmを読んで、このコードをテストすることにしました。しかし、スレッド内では、repaint()メソッドが呼び出されていません。私は私の結果のようなものであることを期待したい実行可能なJavaでの再描画

public class test extends Applet implements Runnable{ 
    int hello; 

    public void start(){ 
     Thread run = new Thread(this); 
     run.start(); 
    } 

    public void run() { 
     for (int i = 0; i < 30; i++){ 
      hello = i; 
      repaint(); 
     } 
    } 

    public void paint(Graphics g){ 
     System.out.println(hello); 
    } 
} 

29 
29 

を、私は理由を理解していない:

0 
1 
2 
... 
29 

しかし、代わりに私が取得します。私はstop()メソッドを持っていないのでそれはありますか?

+0

迅速に連続して 'repaint()'を複数回呼び出すと、通常は1回の呼び出しで結合されます。 1)なぜアプレットをコード化するのですか?教師がそれを指定している場合は、[CS教師が** Javaアプレットを教えるのを止めるべき理由](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop-teaching-java-applets /)を使用します。 2)なぜAWTを使用するのですか? Swingに賛成するAWTコンポーネントを放棄する多くの理由から、[この回答](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)を参照してください。 –

答えて

-1

編集:

私はアプレットではなくコンポーネントを考えていました。 Repaintはpaintと同じではありません。あなたが言っているようにループインデックスを見たい場合は、paintを呼び出してメソッドにGraphicsオブジェクトを渡す必要があります。

+0

どうすればいいですか?私はrun()とpaint()の両方に@Overrideを入れてみましたが、うまくいきません。 –

+0

上記の編集を参照してください。私はアプレットにはそれらのメソッドがないことを忘れてしまった。それらはJPanelのようなクラスによってサブクラス化されたJComponentの一部です。アプレットでのペインティングの例として、http://www.oracle.com/technetwork/java/applet-137165.htmlを参照してください。 – jdhurricanes

関連する問題