我试图通过在两个连续的油漆之间添加一个停顿来减慢绘画速度。 Thread.sleep()
显然不起作用。这是代码:
import javax.swing.*;
import java.awt.*;
public class Sa {
int x = 70;
int y = 70;
public static void main(String[] args) {
Sa gui = new Sa();
gui.go();
}
public void go() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyDrawPanel drawPanel = new MyDrawPanel();
frame.getContentPane().add(drawPanel);
frame.setSize(300, 300);
frame.setVisible(true);
for(int i=0; i<130; i++) {
x++;
y++;
drawPanel.repaint();
try {
Thread.sleep(1500);
} catch(Exception ex) {}
}
}
class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
Thread.sleep(1500); // will not work!!
g.setColor(Color.green);
g.fillOval(x, y, 80, 40);
}
}
}
答案 0 :(得分:4)
在Thread.sleep()
方法中移除paint()
,不需要它,其次,您Thread.sleep()
需要被捕获InterruptedException
,编译时可能会出错:
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
//Thread.sleep(1500); // will not work!! (DONT NEED this
g.setColor(Color.green);
g.fillOval(x, y, 80, 40);
你看过Swing Timer吗?