gpt4 book ai didi

java - 如何在 JFrame 中以正确的方式实现计时器

转载 作者:行者123 更新时间:2023-11-30 03:28:31 24 4
gpt4 key购买 nike

我正在努力找出如何让这个程序中的点用计时器每秒或每两秒改变一次。我尝试了一些组合,但没有成功。我相信 ActionListener 中有些东西我可能失败了。

ArrayList<Point> punkter = new ArrayList<Point>();

int i = 0;
int n = 0;
public Point[] point = null;
private Timer timer;
Random rg = new Random();


public timer(){
this.setTitle("Draw");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(1010, 710);
this.setLayout(null);
this.setLocationRelativeTo(null);

point = new Point[100];

this.setVisible(true);

timer = new Timer(500,this);
timer.start();
}
public void paint(Graphics g){
super.paint(g);

for (int i = 0; i < punkter.size(); i++) {
Point a = punkter.get(i);
Point b = punkter.get((i+1)%punkter.size());
g.fillOval(a.x, a.y, 5, 5);
g.drawLine(a.x, a.y, b.x, b.y);
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
for(int i = 0;i < 100;i++){
point[i] = new Point(rg.nextInt(1000), rg.nextInt(700));
punkter.add(point[i]);
}
}
}

最佳答案

当您希望重新绘制时,请在组件上调用repaint(),否则可能不会调用paintComponent(或paint)方法。可能不直接相关,但值得给出建议(并在trashgod的评论中指出):使用添加到JFrame(如JPanel)的组件,并在该组件的paintComponent方法中执行所有绘图(如果这样做,则应该在此组件上调用重绘)。

关于java - 如何在 JFrame 中以正确的方式实现计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29636782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com