如何使用Timers延迟java中的return语句

时间:2014-01-02 17:23:11

标签: java swing timer awt delay

我有一个返回某个int变量的方法,但是这个变量应该由用户使用在返回之前调用此方法时弹出的JFrame进行修改。 所以我想到使用一个定时器,它会使return语句延迟一定的秒数,当按下例如按钮时,定时器会停止并且变量会改变

以下是方法:

public static int c(){

    x.setVisible(true);// x is the name of the frame
    timer.schedule(new TimerTask() {
        public void run() {
            System.out.println("Text");
        }
    }, 5000);
    return q;
}

这是构造函数中按钮上设置的ActionListener:

    d.addActionListener(new ActionListener(){ //d is the name of the button
        @Override
        public void actionPerformed(ActionEvent arg0) {
            q=5;
            timer.cancel();
            x.setVisible(false);
        }
    }); 

但它所做的只是延迟run方法中的打印语句,当然我无法返回延迟的任务,因为它的类型是无效的

由于

1 个答案:

答案 0 :(得分:2)

  

但是这个变量应该由用户使用在返回之前调用此方法时弹出的JFrame来修改

应用程序应该只有一个主JFrame(请参阅:The Use of Multiple JFrames: Good or Bad Practice?)。子窗口应为model JDialog。然后在显示对话框时,setVisible()语句之后的代码将不会执行,直到对话框关闭。

您可以创建自己的自定义JDialog,也可以更轻松地使用JOptionPane。有关更多信息和示例,请参阅How to Make Dialogs上的Swing教程中的部分。