繁体   English   中英

如何在Java中重绘图形?

[英]How to repaint figures in java?

我尝试绘制一些图形,如下所示(我未包括涉及main方法的其他类)...它不会重新绘制的问题我只得到了三条粗线作为输出,但它应该绘制一个椭圆形和两个矩形,以便当while循环工作时它们在框架中移动...

package shapes;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class GamePanel extends JPanel {

    int n1=0;
    int n2=0;
    int n3=0;

    @Override
    public void paintComponent(Graphics g) {
        do {
        // super.paintComponent(g);
        g.drawRect(n1++, 33, 54, 84);
        g.setColor(Color.BLUE);
        g.fillRect(100, n2++, 56, 97);
//      g.setColor(Color.BLUE);
        g.drawOval(44, n3++, 44, 66);


        } while (n1<=500 && n2<=500 && n3<=500);
        n1++;
        n2++;
        n3++;
        repaint();
      }
    }

如何更正代码以使其重新绘制每个循环的图形,从而使其不显示三条粗线? (我希望包含do命令)..谢谢

  1. super.paintComponent任何自定义绘画之前(而不是在循环内)调用super.paintComponent
  2. 不要在paint方法中调用repaint ,这可能会设置无限的repaint循环,这可能会消耗您的所有CPU周期。
  3. 改用Swing Timer生成计划的更新和动画

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM