我正在学习Java,并试图构建一个应用程序,当我单击面板时,它会抛出一个球。问题是,当绘制椭圆时,它移动得如此之快,以至于即使将Thread.sleep设置为最大值也只会使其几乎看不到。我怎么才能让它慢下来呢?
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.red);
g2.drawOval(x,y,20,20);
Thread thread = new Thread() {
public void run() {
while (true) {
y = y + 1;
repaint();
try {
Thread.sleep(2147483647);
}
catch (InterruptedException ex) {
}
}
}
};
thread.start();
}
发布于 2019-06-05 04:27:28
我还没有在我自己的环境中尝试过你的程序,但据我所知,似乎让你的球移动的是:
y = y + 1;
行,因此您可以考虑将其更改为一个较小的数字,很可能是双精度。另外,正如前面提到的,也许您可以尝试不使用:
while (true)
语句,因为这将总是和永远计算为真,这不是最大的问题,但也许你可以考虑使用其他东西,比如使用与y
变量有关的东西,比如:while (y < 768 )
,或者甚至是像for循环这样的东西,这取决于你正在做的是什么。
希望这能对你有所帮助,我也建议你看看这里的答案:Java Graphics Updating Too Fast
祝你一切顺利!
https://stackoverflow.com/questions/56450707
复制相似问题