如何在 Swing 延迟几秒后处理帧?

How do I dispose a frame after few seconds of delay in Swing?

我想延迟 2 到 3 秒处理我的第一帧,然后打开另一帧。我可以使用 dispose() 方法处理帧,但我希望它至少延迟 2 秒。我该怎么做? 下面是我处理框架的登录代码 注意:我在 NetBeans 中使用 GUI builder for swing

private void LoginActionPerformed(java.awt.event.ActionEvent evt) {                                      
        String userName = userField.getText();
        String password = passField.getText();
        if (userName.trim().equals("admin") && password.trim().equals("admin")) {
            message.setForeground(Color.green);
            message.setText(" Hello " + userName
                + "");
            dispose();
            Dashboard mydash = new Dashboard();
            mydash.setVisible(true);
        } else {
            message.setForeground(Color.red);
            message.setText(" Invalid user.. ");
        }
    }                               

正确的解决方案是使用 javax.swing.Timer:

int delay = 3000;
Timer timer = new Timer( delay, new ActionListener(){
  @Override
  public void actionPerformed( ActionEvent e ){
      yourFrame.dispose();
      Dashboard mydash = new Dashboard();
      mydash.setVisible(true);
  }
});
timer.setRepeats(false);
timer.start();