1
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脚本的公认答案,它可以工作,但现在的问题是我如何让它不止一次地绘制?

4

1 回答 1

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 时灵活地根据需要使用 JFrame 重新定位查看组件。

于 2012-05-25T02:10:25.110 回答