简体   繁体   English

我无法通过输入和用户输入另一个 class

[英]I am having trouble getting passEntered and userEntered into another class

I am having a problem getting variables from one class to another (passEntered and userEntered) the are giving errors every time I set them up.我在从一个 class 到另一个(passEntered 和 userEntered)获取变量时遇到问题,每次设置它们时都会出错。 I have tried getters and setters but it doesn't seem to work.我已经尝试过 getter 和 setter,但它似乎不起作用。 The variables are getting inputs but don't seem to want to share to other classes.变量正在获取输入,但似乎不想与其他类共享。

First Class:第一个 Class:

public class LoginGUI {
    private JFrame frame = new JFrame ();
    private JPanel panel = new JPanel();
    private JLabel passwordLabel = new JLabel ("Enter Your Password:");
    private JButton loginButton = new JButton ("Login");
    **JTextArea usernameEnter = new JTextArea (0, 0);**
    private JLabel usernameLabel = new JLabel ("Enter Your Username:");
    **JPasswordField passwordEnter = new JPasswordField (5);**
    private JLabel registerLabel = new JLabel ("If you dont have an account register here:");
    private JButton registerButton = new JButton ("Register");
    **public String userEntered;
    public String passEntered;**

    public LoginGUI() {
        PanelSetup();
        FrameSetup();
        setBounds();

        loginButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                **userEntered = usernameEnter.getText();
                passEntered = passwordEnter.getText();**
                System.out.println(passEntered);
                System.out.println(userEntered);

            }

        });

        registerButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==registerButton){
                    frame.dispose();
                    registerGUI myWindow = new registerGUI();
                }
            }
        });

    }

Second Class:第二个 Class:

public class loginChecker {
String username, password;

    
    public static void main (String[] args) {
        new loginChecker();
    }

    private void loginChecker() {
        setUsername();
        setPassword();
    }

    private void setPassword() {
        password = passEntered;
    }

    private void setUsername() {
        username = userEntered;
    }

}

If you could help it would be greatly appreciated如果您能提供帮助,将不胜感激

The class loginChecker should start with an uppercase letter, as the naming conventions suggest.正如命名约定所建议的,class loginChecker应该以大写字母开头。 Other than that, how should the class know the passEntered and userEntered variables?除此之外,class 应该如何知道passEntereduserEntered变量? I would change the class like so:我会像这样更改 class :

public class LoginChecker {
    public String username, password;
    public void changePassword(String newPassword) {
        // TODO: Check whether the password matches some criteria
        // TODO: Encrypt password
        password=newPassword;
    }
    public void changeUsername(String newUsername) {
        // TODO: Check Username availability
        username = newUsername;
    }
    public String getUsername() { return username; }
    // Could also change the signature to use a key String that will be used to decrypt an encrypted password
    public String getPassword() { return password; }
}

Also, you should probably not store passwords unencrypted.此外,您可能不应该存储未加密的密码。
Inside the LoginGUI class, you save a reference to a LoginChecker object and use its fields.LoginGUI class 中,保存对LoginChecker object 的引用并使用其字段。

...
LoginChecker loginChecker = new LoginChecker();
...
loginChecker.changeUsername(usernameEnter.getText());
loginChecker.changePassword(passwordEnter.getText());
// You can then get the password and username using loginChecker.getUsername() and loginChecker.getPassword()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM