Java-暂停方法?

Java-暂停方法?,java,sleep,Java,Sleep,我的一个菜单就是一个图像和一个“返回”按钮 问题是,后退按钮总是在图像之前加载,即使它在代码中位于之后 有办法解决这个问题吗?我是编程新手,所以我能想到的最好的方法就是在图片加载时暂停方法,比如说3秒钟,然后加载后退按钮 我尝试过使用thread.sleep(3000),但是如果我这样做,图像根本不会加载!也许我用错了 public void render(Graphics g){ if(Instscrn==true){ g.drawImage(InstructionScre

我的一个菜单就是一个图像和一个“返回”按钮 问题是,后退按钮总是在图像之前加载,即使它在代码中位于之后

有办法解决这个问题吗?我是编程新手,所以我能想到的最好的方法就是在图片加载时暂停方法,比如说3秒钟,然后加载后退按钮

我尝试过使用thread.sleep(3000),但是如果我这样做,图像根本不会加载!也许我用错了

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!");
}