0

だから私はこのJPanelグラフィックスコードを持っています:

public void paint(Graphics g){
    super.paint(g);

    for(int y=0 ;y < 50; y++){
        for(int x = 0; x < 50; x++){
            if(m.getMaze(x, y).equals("g")){
                g.drawImage(m.getGround(), x * 16, y * 16,null);
            }
            if(m.getMaze(x, y).equals("w")){
                g.drawImage(m.getWall(), x * 16, y * 16,null);
            }
            if(m.getMaze(x, y).equals("S")){
                g.drawImage(m.getStart(), x * 16, y * 16,null);
            }
            if(m.getMaze(x, y).equals("E")){
                g.drawImage(m.getEnd(), x * 16, y * 16,null);
            }
        }
    }
}

for ループ (2 番目のループ) の中で、0.5 秒間一時停止したいので、各タイルが描画されているのがわかります。問題は、私が使用するときです

Thread.sleep(500);

2 番目の for ループの後、すべてが永久に停止します。私が使用する場合

g.wait(500);

それはスパムを続けます

java.lang.IllegalMonitorStateException

コンソールで。はい、try/catch で囲まれています。これを一時停止するにはどうすればよいですか?

4

2 に答える 2

2

スイング中 タイマーコールrepaint(50L, x*16, y*16, 16, 16);. 現在の状態 ( xy)、

すべての paintComponent で、その状態/タイルのみを描画します。

于 2014-06-30T09:29:07.850 に答える