我试图让画面在画布上移动。
import java.awt.*; class GraphicsProgram extends Canvas{
static int up = 0;
public GraphicsProgram(){
setSize(700, 700);
setBackground(Color.white);
}
public static void main(String[] argS){
//GraphicsProgram class is now a type of canvas
//since it extends the Canvas class
//lets instantiate it
GraphicsProgram GP = new GraphicsProgram();
//create a new frame to which we will add a canvas
Frame aFrame = new Frame();
aFrame.setSize(700, 700);
//add the canvas
aFrame.add(GP);
aFrame.setVisible(true);
}
public void paint(Graphics g){
Image img1 = Toolkit.getDefaultToolkit().getImage("Code.jpg");
g.drawImage(img1, up, up, this); }
public void Move() { up = up + 1; Move();
Thread.sleep(2000);
}
}
然后控制台返回
GraphicsProgram.java:43:错误:未报告的异常 InterruptedException的;必须被抓住或宣布被抛出 了Thread.sleep(2000); ^ 1错误
我真的不明白为什么我的Thread.sleep()
没有工作,因为我已经搜索过了,这正是他们所说的。
答案 0 :(得分:1)
通常,在Thread.sleep()
方法中使用Move
是不好的做法。但是,如果这是你打算做的事情:
这是一个编译错误,抱怨可能没有被捕获的异常,请尝试使用try-catch语句围绕Thread.sleep(2000)
,例如:
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
InterruptedException
是经过检查的例外情况,您必须catch
,如下所示:
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
但是,正如@Hovercraft强调的那样,在绘画方法中调用睡眠不是一个好习惯。