3

repaint()コードでは、メソッドからメソッドを呼び出してinit()いますが、出力が期待どおりではありません。repaint()メソッドを10回呼び出しましたが、1回しか呼び出されませpaint()んでした(O / Pのスクリーンショットを参照)。私は間違いを犯していますか?私を助けてください。ありがとう

コード

import java.awt.*;
import java.applet.Applet;
/*
    <applet code="test" height=300 width=300>
    </applet>
*/
public class test extends Applet
{
    int x,y;
    public void init() 
    {
        x=5;
        y=10;
        for(int i=1;i<10;i++)
        {
            System.out.println("From init "+i);
            x+=(i*2);                                   
            y+=(i*3);   
            repaint();      
        }                   
    }   
    public void paint(Graphics g)
    {
        System.out.println("Paint");
        g.drawLine(50,50,x,y);
    }   
}

出力

4

1 に答える 1

3

paint(...)が呼び出されるかどうか、またはいつ呼び出されるかを完全に制御することはできません。また、repaint()呼び出しは、JVMにペイントするための提案にすぎないことを理解してください。repaint()リクエストが多すぎて、あなたのリクエストと同じようにスタックする場合、それらは結合されます。詳細については、この記事「AWTとSwingでのペイント」を参照してください。

とにかく、コードが機能したとしても、すべてのxとyの変更とペイントはほぼ瞬時に行われるため、コードのユーザーに目に見える変更は発生しません。おそらくあなたは本当にスイングタイマーを使いたいですか?おそらく、AWTではなくSwingでこれを再コーディングしたいと思うでしょう。

于 2012-11-06T18:13:08.073 に答える