使用PaintComponent()重新绘制

时间:2012-05-25 01:52:22

标签: java swing graphics draw repaint

class BiomeViewComponent extends JComponent {
@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    int xpos=300;
    int ypos=300;
    g.setColor(Color.yellow);
    Random r = new Random();
    int spread = r.nextInt(2)+1;
    System.out.println(spread);
    if (spread==1){
        xpos=xpos+50;
        g.setColor(Color.yellow);
        g.fillRect(xpos,ypos,50,50);
    }
    else{
        ypos=ypos-50;
        g.setColor(Color.yellow);
        g.fillRect(xpos,ypos,50,50);
    }
}

}

我使用了paintComponent脚本的接受答案,就像上面的代码一样,但是现在的问题是如何让它不止一次地绘制?

1 个答案:

答案 0 :(得分:2)

您应该在覆盖的paintComponent函数中编写绘制代码,例如:

class BiomeViewComponent extends JComponent {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        // your painting code goes here
    }
}

然后将其添加到您的JFrame中,例如:

JFrame j = new JFrame();
BiomeViewComponent bv=new BiomeViewComponent();

Container c=j.getContentPane();
c.setLayout(new BorderLayout()); // whatever layout you want here.....
c.add(bv);

BiomeViewComponent将在需要时通过Swing重新绘制(即它将为您调用paintComponent(..)函数)

请注意,最好将绘制代码放在JFrame以外的组件中 - 这使您可以在构建GUI时根据需要灵活地重新定位查看组件。