我想让用户等待一定的时间(10秒)。我知道在JSP或servlet中我们使用META标签<META HTTP-EQUIV="Refresh" CONTENT="3">
。在Swing中有没有办法让用户等待一段时间?我正使用Swing;我想让用户等待一段时间,并显示从数据库中获取的某些信息。这通过Swing是否可行?
javax.swing.Timer
。例如:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class SimpleTimer extends JFrame implements ActionListener
{
private JLabel label;
private Timer timer;
private int counter = 10; // the duration
private int delay = 1000; // every 1 second
private static final long serialVersionUID = 1L;
public SimpleTimer()
{
super("Simple Timer");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 65);
label = new JLabel("Wait for " + counter + " sec");
getContentPane().add(label);
timer = new Timer(delay, this);
timer.setInitialDelay(0);
timer.start();
setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new SimpleTimer();
}
});
}
@Override
public void actionPerformed(ActionEvent e)
{
if(counter == 0)
{
timer.stop();
label.setText("The time is up!");
}
else
{
label.setText("Wait for " + counter + " sec");
counter--;
}
}
}
最后,请记住,在摆动线程上睡觉会使UI无响应。另外,您的模型触发的任何事件都应该排队到Swing事件线程上。有关如何执行此操作,请参见SwingUtilities.invokeLater(...)。