我正在创建一个小的GUI Java应用程序,它将在文件中存储一些用户凭据。

如果文件丢失或具有错误的属性,那么我希望弹出一个弹出窗口,通知用户注册他的凭据(以便可以使用正确的凭据创建一个新文件)。

我已经确定了文件何时不正确和/或丢失的逻辑,但是我无法弄清楚(由于我对JFrame的经验不足)是代码中检查用户是否需要输入凭据的确切位置,因此可以提示。

假设函数showWarning()是将在需要时检查并显示弹出窗口的函数,这是我的main JFrame函数(主要是从Netbeans生成的):

public static void main(String args[]) {

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
        }
  });
}


是否将showWarning()函数放入main函数中?如果是,我将它放在new GUI().setVisible(true);之后吗?正确的做法是什么?

编辑:我绊倒了以前做过的同样的问题。这是我为测试目的快速起草的showWarning()

public void showWarning(){
        File propertiesFile = new File("config.properties");
        if (propertiesFile.exists() && propertiesExist(propertiesFile)) {
            JOptionPane.showMessageDialog(rootPane, "Creds are ok");
        } else {
            JOptionPane.showMessageDialog(rootPane, "Creds are not ok");
        }
    }


我遇到的问题是,由于rootPane是非静态对象,因此无法在没有对象的情况下将此方法设为静态,以便无法使用它。造成的问题是我不能只写:

public static void main(String args[]) {

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
                showWarning();
        }
  });
}


我不能像这样使用showWarning(),因为它是一种非静态方法。

我是否需要在变量中正确包含GUI对象,或者是否有办法使showWarning()成为静态方法?

最佳答案

如果希望在程序启动时正确运行检查,则希望在将主JFrame gui设置为可见之后放置函数调用。参见下面的编辑代码。当然,我在这里使用了模棱两可的showWarning()函数,但是您应该根据自己的需要来调整该行代码。如果调用函数,则对函数进行修改,但是如果要调用新的弹出式jframe,则需要在其中执行更多代码行。

public static void main(String args[]) {

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
                LoginForm login = new LoginForm();
                login.setVisible(true);
        }
  });
}


现在,您将要相应地更改变量。 LoginForm是已经创建的Jframe。

09-11 05:58