Java Swing GUI Ошибка входа слушателя действий - PullRequest
2 голосов
/ 22 февраля 2020

Привет. Я пытаюсь создать Java GUI вход в систему с использованием необработанного кодирования, однако я обнаружил одну ошибку во время прослушивателя действий Java, который не проверяет, есть ли в системе входа требование и отправьте текст.

Вот как это должно выполняться:

add username label and text 
add password label and text
add success label and text
checks username text input *
checks password text and input *
send success label to the JLabel *

* эта маркировка - это три проверки, которые вообще не работают. первые 3 появляются, но последние 3 вообще не появляются.

это код, который я пытался запустить

button.addActionListener(this);
button.addActionListener(new Login());

Я пытался использовать эти два метода и похоже, это не работает.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Login implements ActionListener {

    private JFrame frame;
    private JPanel panel;
    private JLabel username;
    private JTextField user;
    private JLabel password;
    private JPasswordField pass;
    private JButton button;
    private JLabel success;

    public Login(){
        frame = new JFrame();
        panel = new JPanel();

        frame.setSize(350,200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(panel);
        panel.setLayout(null);

        username = new JLabel("User");
        username.setBounds(10,20,200,25);
        panel.add(username);

        user =  new JTextField(20);
        user.setBounds(100,20,200,25);
        panel.add(user);

        password = new JLabel("Password");
        password.setBounds(10,50,80,25);
        panel.add(password);

        pass = new JPasswordField(20);
        pass.setBounds(100,50, 200 ,25);
        panel.add(pass);

        button = new JButton ("Login");
        button.setBounds(10,80,80,25);
        button.addActionListener(this);
        panel.add(button);

        success = new JLabel(""); 
        success.setBounds(10, 110, 300, 25);
        panel.add(success);


        frame.setVisible(true);
    }
    public static void main (String[] args ){
        new Login();
    }
    @Override
    public void actionPerformed(ActionEvent e){
        String user = username.getText();
        String password = pass.getText();

       if (user.equals("Someone") && password.equals("Someone")){
            success.setText("Success");
        }
    }
}

есть ли способ решить эту проблему

1 Ответ

1 голос
/ 22 февраля 2020

Небольшая отладка показала бы, что код в методе actionPerformed(..) получает текст метки пользователя, а не текстовое поле.

Изменение:

//String user = username.getText();
String userString = user.getText();

И :

//if (user.equals("Someone") && password.equals("Someone")) {
if (userString.equals("Someone") && password.equals("Someone")) {
...