Java 等待()并执行线程。睡眠()不起作用
我试图让图片在画布上移动Java 等待()并执行线程。睡眠()不起作用,java,Java,我试图让图片在画布上移动 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){ //G
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);
}
}
然后控制台返回
java:43:错误:未报告的异常
中断异常;必须被抓住或宣布被抛出
《睡眠》(2000年);
^1错误
我真的不明白为什么我的
线程.sleep()
无法正常工作,因为我已经搜索了它,这正是他们放置的内容。中断异常是一个选中的异常,您必须捕获它,如下所示:
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
但是,正如@Hovercraft所强调的,在绘画方法中调用睡眠并不是一个好的实践 一般来说,在Move
方法中使用Thread.sleep()
是不好的做法。但是,如果你打算这么做:
这是一个编译错误,抱怨可能无法捕获异常,请尝试使用try-catch语句围绕线程。sleep(2000)
,例如:
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
“代码>”我真的不明白为什么我的线程。睡眠()不工作,因为我已经搜索了,这正是他们所做的。“< /代码> -请显示一个链接到一个高度表决的答案这里,把线程。睡眠在绘画方法的中间。您需要的解决方案是一个摆动计时器,而不是线程。sleep
。您回答的是XY问题,而不是真正的问题。在绘画方法中调用sleep是不好的,不管你是否对它进行了修饰和编译。同样,每个人都在修复编译问题,但给出了错误的建议。@HoverCraftfullOfels你是正确的,我编辑了这篇文章以确保OP理解:)