使用 PaintComponent() 重新绘制


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 脚本的公认答案,就像上面的代码一样,它有效,但现在的问题是如何让它多次绘制?

你应该在一个重写的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 重新定位查看组件。

相关内容

  • 没有找到相关文章

最新更新