我有一个返回某个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方法中的打印语句,当然我无法返回延迟的任务,因为它的类型是无效的
由于
答案 0 :(得分:2)
但是这个变量应该由用户使用在返回之前调用此方法时弹出的JFrame来修改
应用程序应该只有一个主JFrame(请参阅:The Use of Multiple JFrames: Good or Bad Practice?)。子窗口应为model JDialog
。然后在显示对话框时,setVisible()语句之后的代码将不会执行,直到对话框关闭。
您可以创建自己的自定义JDialog,也可以更轻松地使用JOptionPane。有关更多信息和示例,请参阅How to Make Dialogs上的Swing教程中的部分。