Java-暂停方法?
我的一个菜单就是一个图像和一个“返回”按钮 问题是,后退按钮总是在图像之前加载,即使它在代码中位于之后 有办法解决这个问题吗?我是编程新手,所以我能想到的最好的方法就是在图片加载时暂停方法,比如说3秒钟,然后加载后退按钮 我尝试过使用thread.sleep(3000),但是如果我这样做,图像根本不会加载!也许我用错了Java-暂停方法?,java,sleep,Java,Sleep,我的一个菜单就是一个图像和一个“返回”按钮 问题是,后退按钮总是在图像之前加载,即使它在代码中位于之后 有办法解决这个问题吗?我是编程新手,所以我能想到的最好的方法就是在图片加载时暂停方法,比如说3秒钟,然后加载后退按钮 我尝试过使用thread.sleep(3000),但是如果我这样做,图像根本不会加载!也许我用错了 public void render(Graphics g){ if(Instscrn==true){ g.drawImage(InstructionScre
public void render(Graphics g){
if(Instscrn==true){
g.drawImage(InstructionScreen, 0, 0, Resources.sp);
if(instclose){
g.setFont(new Font("Arial", Font.PLAIN, 30));
g.setColor(Color.BLACK);
g.drawString("Back", 672, 552);
}
带着线睡觉
public void render(Graphics g){
if(Instscrn==true){
g.drawImage(InstructionScreen, 0, 0, Resources.sp);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(instclose){
g.setFont(new Font("Arial", Font.PLAIN, 30));
g.setColor(Color.BLACK);
g.drawString("Back", 672, 552);
}
谢谢你的帮助 您可以在渲染时加载图像(图形g),而无需暂停任何方法:
boolean inited = false;
Image i;
public void render(Graphics g){
if(!inited) {
//here, init your image, for example: download files from web or load resources
try {
i = ImageIO.read(new File(""));//loading image
} catch (IOException e) {
e.printStackTrace();//error
}
inited=true;
}
g.drawImage...
}
不能暂停方法,但可以暂停线程(使用方法):
publicstaticvoidmain(String[]args)抛出InterruptedException{
最终线程可暂停=新线程(“可暂停方法/线程”){
//暂停法
公开募捐{
对于(int i=0;iYou不应该为显示引入延迟。然后,您将限制可能运行的速度。有其他方法吗?您是否可以包含正在渲染到屏幕上的内容的屏幕截图?我不完全确定“在图像之前”是什么意思…它被隐藏了吗?一个映像会很有用。你不应该依赖于执行中断。你的超时对速度非常快的机器没有影响。
public static void main(String[] args) throws InterruptedException {
final Thread pauseable = new Thread("Pauseable method/thread") {
//Pauseable method
public void run() {
for(int i=0; i<20; i++) {
System.out.println("Working");
sleepMethod();
}
}
//Sleep for 1 seconds
public void sleepMethod() {
try {
sleep(1000);
} catch(Throwable t){}
}
};
pauseable.start();
JFrame f = new JFrame();
JButton pause = new JButton("Pause");
JButton start = new JButton("Resume");
pause.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
try {
pauseable.suspend();
} catch(Throwable t) {
t.printStackTrace();
}
}});
start.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
try {
pauseable.resume();
} catch(Throwable t) {
t.printStackTrace();
}
}});
//STYLE OF BUTTONS ETC.:
JPanel p = new JPanel(new GridLayout(1,2));
p.add(pause);
p.add(start);
f.getContentPane().add(p);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
pauseable.join(); //If you want wait to end of running method
System.out.println("Method pauseable.run() was ended!");
}