【问题标题】:Java: Dispose Gui FormJava:处理 Gui 表单
【发布时间】:2019-02-26 08:17:14
【问题描述】:

我正在使用 IntelliJ 制作一个 GUI,并且我选择了 New -> Gui Form 选项。我已将其作为登录屏幕,但我无法在成功登录时处理该窗口。我试图用extends JFrame 扩展类,然后调用dispose(),但它似乎不起作用。我做错了什么?

提前,谢谢。

更新代码:

public LoginFrame() {
    loginButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {

            char[] pass = password.getPassword();
            StringBuilder passwordBuilder = new StringBuilder();

            for (char p : pass)
            {
                passwordBuilder.append(p);
            }

            String password = passwordBuilder.toString();

            //Login.
            if(DatabaseHandler.login(username.getText(), password))
            {
                dispose(); //THIS WINDOW.
            }

            else
            {
                JOptionPane.showMessageDialog( null, "Wrong username or password!", "Login failed!", JOptionPane.ERROR_MESSAGE);
            }


        }
    });
}

【问题讨论】:

  • 请提供代码。如果我们看不到您在做什么,我们就无法告诉您出了什么问题。
  • 你试过this.dispose吗?您是否检查过您的代码是否真的进入了if 块?
  • 我尝试过使用 dispose,但使用 this.dispose 失败。代码确实进入了 if 块。

标签: java swing intellij-idea


【解决方案1】:

您可以尝试以下操作:

        if(DatabaseHandler.login(username.getText(), password))
        {
            Component button = (Component) e.getSource();
            SwingUtilities.getWindowAncestor(button).dispose();
        }

如果没有帮助,请提供MCVE,以便我们了解您的代码有什么问题。

【讨论】:

    【解决方案2】:

    如果你的类扩展了 JFrame,你只需使用你的类名来按照下面的方式处理 JFrame

    windowClassName.super.dispose();
    

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 2022-01-21
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 2011-12-26
      相关资源
      最近更新 更多