如何重绘java中的数字?

时间:2015-10-04 20:17:31

标签: java swing graphics paintcomponent

我尝试绘制一些数字,如下所示(我没有包括涉及主方法的其他类)...它没有重新绘制的问题我只得到三条粗线作为输出但它应该绘制一个椭圆形和两个矩形,因此当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 个答案:

答案 0 :(得分:1)

  1. 在进行任何自定义绘画之前调用super.paintComponent(而不是在循环中);
  2. 不要在绘制方法中调用repaint,这可能会设置无限循环的重绘,这可能会消耗所有CPU周期;
  3. 使用Swing Timer代替生成预定更新和动画