如何使我的 user/pwd 验证与输出工作

How to make my user/pwd verification with output work

所以,我不知道该做什么。我需要将 input1 和 input2 设为两个单独的字段,以免混淆。任何想法,将不胜感激。它不一定是 input1/input2,但如果保持这种方式就好了。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;
import javax.swing.*;
import static jdk.nashorn.tools.ShellFunctions.input;

public class JOptionPaneMultiInput {

public static void main(String[] args) throws FileNotFoundException {

    Scanner keyboard = new Scanner(System.in);
    String input1;
    String input2;

    JTextField UsernameField = new JTextField(10);
    JTextField PwdField = new JTextField(10);

    JPanel myPanel = new JPanel();
    myPanel.add(new JLabel("Username: "));
    myPanel.add(UsernameField);
    myPanel.add(Box.createVerticalStrut(20)); // a spacer
    myPanel.add(new JLabel("Password: "));
    myPanel.add(PwdField);

    input1 = (UsernameField); //<<<--- Error.
    input2 = (PwdField);      //<<<--- Error.

    if (usernamefield(input1)) {

        System.out.println("Username verified.");

    } else if (pwdfield(input2)) {

        System.out.println("Password verified.");

    } else {
        System.out.println("Error: Wrong username/password.");
    }
}

private static boolean usernamefield(String user1) {

    return ((user1.length() == 6)
            && (user1.matches("user"))
            && (user1.matches("user"))
            && (user1.matches("user")));
}

private static boolean pwdfield(String password1) {

    return ((password1.length() == 6)
            && (password1.matches("pwd"))
            && (password1.matches("pwd"))
            && (password1.matches("pwd")));
}
}

Read the fine manual:

input1 = UsernameField.getText();
input2 = PwdField.getText();

此外,您的 JPanel 应添加到 JFrame,后者应设置为可见:

JFrame frm = new JFrame();
frm.getContentPane().add(myPanel);
frm.pack();
frm.setVisible(true);

那么你还应该添加一个JButton来触发登录动作,而不是把它放在main().

我强烈建议您阅读 Java tutorial on Swing

编辑:这里有一个 MCVE 供您将来参考:

public class Test extends JFrame {
    private static final long serialVersionUID = 1L;

    private JTextField tfUsername;
    private JPasswordField tfPwd;

    public Test() {
        super();
        JPanel myPanel = new JPanel();
        getContentPane().add(myPanel);
        myPanel.add(new JLabel("Username: "));
        tfUsername = new JTextField(10);
        myPanel.add(tfUsername);
        myPanel.add(Box.createHorizontalStrut(20)); // a horizontal spacer
        myPanel.add(new JLabel("Password: "));
        tfPwd = new JPasswordField(10);
        myPanel.add(tfPwd);
        JButton btnLogin = new JButton("Login");
        myPanel.add(btnLogin);
        btnLogin.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent evt) {
                String user = tfUsername.getText();
                if (usernamefield(user)) {
                    String pwd = tfPwd.getText(); // Deprecated (use "getPassword()" for better security, see 
                    if (pwdfield(pwd))
                        JOptionPane.showMessageDialog(Test.this, "Password verified.");
                    else
                        JOptionPane.showMessageDialog(Test.this, "Error: Wrong username/password.", "Login error", JOptionPane.ERROR_MESSAGE);
                } else
                    JOptionPane.showMessageDialog(Test.this, "Error: Unknown username.", "Login error", JOptionPane.WARNING_MESSAGE);
            }
        });
    }

    public static void main(String[] args) {
        // You can do that outside of EDT (see 
        Test frm = new Test();
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Outside of Test class so close operation is defined by the user and not the class
        frm.pack();
        frm.setVisible(true);
    }

    private static boolean usernamefield(String user) {
        return "user".equals(user);
    }

    private static boolean pwdfield(String password) { // TODO: Change String to char[] to improve security
        return "pwd".equals(password);
    }
}