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 重新定位查看组件。