Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建带有验证的登录屏幕?_Java_Swing_Security_User Interface_Encryption - Fatal编程技术网

Java 创建带有验证的登录屏幕?

Java 创建带有验证的登录屏幕?,java,swing,security,user-interface,encryption,Java,Swing,Security,User Interface,Encryption,我正在为使用单向加密的调度程序创建一个Java登录屏幕。该计划的工作应如下所示: 如果是第一次打开程序,会出现一个窗口,要求用户输入用户名和密码以及安全问题。这是第一次,密码不会被黑圈隐藏。相反,它将以纯文本显示 然后,三个字段将使用3点的caesar/shift密码进行加密,“加密”值将保存到程序源文件夹中名为info.txt的文件中 然后,用户将被重定向到登录页面,在该页面中,他们将重新输入用户名和密码以登录。这里,密码字段是固定的,因此字母显示为黑色圆圈(不确定这是什么)。声明一个名为Lo

我正在为使用单向加密的调度程序创建一个Java登录屏幕。该计划的工作应如下所示:

  • 如果是第一次打开程序,会出现一个窗口,要求用户输入用户名和密码以及安全问题。这是第一次,密码不会被黑圈隐藏。相反,它将以纯文本显示
  • 然后,三个字段将使用3点的caesar/shift密码进行加密,“加密”值将保存到程序源文件夹中名为info.txt的文件中
  • 然后,用户将被重定向到登录页面,在该页面中,他们将重新输入用户名和密码以登录。这里,密码字段是固定的,因此字母显示为黑色圆圈(不确定这是什么)。声明一个名为LoginAttents的新int变量,并用值0初始化
  • 用户点击“登录”后,系统将对输入的登录详细信息使用相同的加密方法,并将其与文本文件中的加密信息进行比较。如果两个值都匹配,则用户将被重新定向到程序的主屏幕,并被授予访问权限
  • 如果不是,则LoginAtests递增。第五次之后,这种情况发生,用户将被问到他们的安全问题。如果第一次回答错误,他们将从程序启动
  • 我有几个问题,因为我很难创建这个

  • 我用来产生错误消息的对话框非常混乱,看起来不起作用。我直接从Oracle网站上获得了使用它们的代码,但仍然有问题——NetBeans告诉我,它“找不到showInputDialog(我用来显示错误消息的方法)的符号”,但这并不意味着我缺少任何导入

    String errorMessage = "Security Question: What was your favorite class in college?";
    
        String s = (String) JTextField.showInputDialog(
                null,
                errorMessage,
                "ERROR",
                JOptionPane.PLAIN_MESSAGE,
                JOptionPane.WARNING_MESSAGE,
                null,
                securityAnswer);
    
  • 给我一个错误的部分是“showInputDialog”这个词本身,我不确定为什么。。?我希望这个特定的对话框中出现一个文本字段,以便用户可以在其中输入安全问题的答案。然而,代码似乎根本不起作用

    在Oracle页面上,这是给定的代码,用于显示带有输入字段的对话框:

    String s = (String)JOptionPane.showInputDialog(
                        frame,
                        "Complete the sentence:\n"
                        + "\"Green eggs and...\"",
                        "Customized Dialog",
                        JOptionPane.PLAIN_MESSAGE,
                        icon,
                        null,
                        "ham");
    
    //If a string was returned, say so.
    if ((s != null) && (s.length() > 0)) {
        setLabel("Green eggs and... " + s + "!");
        return;
    }
    
    //If you're here, the return value was null/empty.
    setLabel("Come on, finish the sentence!");
    
    但是单词frame在netbeansgui中产生了一个错误,我不知道为什么它不能工作。我只想创建一个如下所示的文本框:

    但我不知道如何以一种可行的方式做到这一点

  • 按照我设置程序的方式,我制作了多个jFrame组件(不同的类),并且我对它进行了设置,以便如果您尝试访问不同的帧,您当前打开的帧将变为不可见。例如:

    (用户在主屏幕上,他们单击一个按钮,上面写着“添加约会”。) addAppointment a=新的addAppointment()

    a、 setVisible(真)

    a、 setAlwaysOnTop(真)

    这个。dispose()

  • 这几乎适用于我所有的程序,除了登录页面

    public createUserPass() throws IOException {
            String path="\\src\\Schedulemanager\\pkg\\info.txt";
                 file = new File(path); //creates new File
                    if (file.exists()) { //make a new file if it's not already existent
                        logIn loginPage = new logIn();
                        loginPage.setVisible(true);
                        loginPage.setAlwaysOnTop(true);
                        this.dispose();
                        this.setVisible(false);
                    } else {
                        file.createNewFile(); //creates the new file
                        initComponents();
                    }
        }
    
    这是程序中的“main”类,如果单击.jar文件,它将运行。它应该做的是检查info.txt文件是否存在。如果是这样,那么显然用户已经设置了登录信息,它应该关闭自己并打开login类的实例,这是一个jFrame,一旦设置了信息,它就会处理登录函数。但是,它不起作用!它会打开新的登录类,但不会首先处理设置信息的原始登录类

    隐藏原始jFrame非常重要,这样用户就不能每次运行程序时都设置新密码!我怎样才能解决这个问题


    如果我需要澄清任何事情,请告诉我。

    这只是一个有趣的项目,还是您真的打算在生产环境中使用它?@LukePark school project。他们对它没有很高的期望,因为我们只是在学习java。你能创建一个新的应用程序并发布在这里吗?您还检查了是否使用了
    if
    ?您可以将
    System.out.println(“如果案例触发”)
    或类似的代码,然后查看是否调用了if。