Проблема с программой аутентификации Java

Я новичок в программировании и создал небольшую программу для практики кода. Это программа аутентификации, в которой вы вводите имя пользователя и пароль, и только мои указанные имя пользователя и пароль будут работать, чтобы отобразить картинку. Я набрал весь код, и ошибки не было; но когда я запустил его и набрал имя пользователя и пароль, он не смог показать картинку. Вот мой код

package main.Swing.com;
//imports

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputMethodEvent;
import java.awt.event.InputMethodListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.util.EventObject;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

//class that carries other classes and carries some variables
public class Main extends javax.swing.JFrame implements ActionListener, TextListener, InputMethodListener {

    JButton Test = new JButton("TEST IF YOU HAVE ACCESS TO THIS");
    JButton Cancel = new JButton("CANCEL");
    JTextField username = new JTextField(15);
    JTextField password = new JTextField(15);
    String n = ("Nathan");
    int nathannam;
    int nathannamer;
    JButton superman;
    JButton supermanny;

//constructor class that has the jframe 
    public Main() {
        super("Authenticator");
        setSize(300, 220);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLookAndFeel();
//creating the pane and defining some labels    
        JPanel pane = new JPanel();
        JLabel UsernameLabel = new JLabel("Username: ");
        JLabel PasswordLabel = new JLabel("Password: ");
//adding all the components to the pane
        pane.add(UsernameLabel);
        pane.add(username);
        pane.add(PasswordLabel);
        pane.add(password);
        pane.add(Test);
        pane.add(Cancel);
//adding the pane
        add(pane);
//adding a event listener to my JButton titled Test
        Test.addActionListener(this);
//checking if the password variable and name variable are both 
//correct by taking the values assigned to each of them later
//on in the code and adding them together and if they add together
//to the correct amount it should display a button, but it doesn't
//which is the problem I am having
        if (nathannam + nathannamer == 24) {
            ImageIcon superman = new ImageIcon("JButton.png");
            JButton supermanny = new JButton(superman);
            pane.add(supermanny);
        }

//setting visibility to true
        setVisible(true);
//end of constructor class
    }
//start of class that checks if the username is correct

    public void METHODPREFORMED(ActionListener evt) {
        Object source = ((EventObject) evt).getSource();
//testing if username is equivalent to my name which is nathan
        if (source == Test) {
            String get = username.getText().toString();
            String notation = "Nathan";
//if it is equivalent a variable will be assigned to nathanam
            for (int i = 0; i < get.length(); i++) {
                if (get.substring(i) == notation) {
                    int nathannam = 14;
//if it is not it will assign a wrong variable to nathannam
                } else {
                    int nathannam = 15;
                }
            }
        }
    }

//testing if password variable is correct
    public void ACTIONPREFORMED(ActionListener evt) {

        Object source = ((EventObject) evt).getSource();
//testing if password is correct
        if (source == Test) {

            String got = password.getText().toString();
            String notition = "iamnathan";
//if it is equivalent a variable will be assigned to nathanamer
            for (int i = 0; i < got.length(); i++) {
                if (got.substring(i) == notition) {
                    int nathannamer = 10;
//if it is not equivalent nathannamer will be assigned a wrong variable
                } else {
                    int nathannamer = 15;
                }
            }

        }
    }   //setting the nimbus setlookandfeel that was implemented in java 7

    private static void setLookAndFeel() {
        try {
            UIManager.setLookAndFeel(
                    "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
            );
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

//adding the main method
    public static void main(String[] args) {
        setLookAndFeel();
        Main main = new Main();
    }

    @Override
    public void textValueChanged(TextEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void caretPositionChanged(InputMethodEvent event) {
        // TODO Auto-generated method stub
    }

    @Override
    public void inputMethodTextChanged(InputMethodEvent event) {
        // TODO Auto-generated method stub
    }
}//end of program

1 ответ

Вы никогда не вызываете свой тестовый метод из своей реализации actionPerformed(), Вот очень упрощенная версия вашей программы, которая проверяет username когда вы нажимаете на TestAccess.

В дальнейшем см. Как использовать поля паролей для рабочего примера использования JPasswordField,

import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

/**
 * @see
 */
public class Test {

    private final JTextField username = new JTextField(15);
    private final JButton test = new JButton("Test access");

    private void display() {
        JFrame f = new JFrame("Test");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLayout(new GridLayout(0, 1));
        f.add(username);
        test.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("nathan".equalsIgnoreCase(username.getText()));
            }
        });
        f.add(test);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            new Test().display();
        });
    }
}
Другие вопросы по тегам