【问题标题】:How do I dispose a frame after few seconds of delay in Swing?在 Swing 中延迟几秒钟后如何处理帧?
【发布时间】:2020-03-07 03:50:57
【问题描述】:

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

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

【问题讨论】:

  • 不相关:阅读有关 java 命名约定:方法名称采用驼峰命名法,它们应该使用动词,更像“performLogin()”或类似的东西。当然:像这样硬编码密码是不行的,但我想这只是一个学习项目;-)
  • 是的,这是一个学习项目... :-)

标签: java swing awt swingx swingbuilder


【解决方案1】:

正确的解决方案是使用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();

【讨论】:

  • 非常感谢。你救了我! :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2018-04-08
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
相关资源
最近更新 更多