0

I am currently having issues with a program I have created with IntelliJ:

Below is code for a login system that returns a java.lang.NullPointerException every time I "successfully" log in:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class LoginForm extends JFrame{
    private JButton btnClear;
    private JPanel mainLoginPanel;
    private JButton btnLogin;
    private JTextField txtUsername;
    private JPasswordField pwdFieldPassword;
    private JLabel lblUsername;
    private JLabel lblPassword;
    private JPanel txtUsernamePanel;
    private JPanel pwdFieldPasswordPanel;
    private JPanel buttonsPanel;
    private JLabel lblTitle;

    static loginAccount[] accountsDatabase = new loginAccount[2];

    public static void main (String[] args)
    {
        LoginForm page = new LoginForm("Admin Login");
        page.setVisible(true);

        try {
            Scanner input = new Scanner(new File("src//adminAccountsCreds.txt"));
            input.useDelimiter("\n");

            while(input.hasNext())
            {
                for(int i = 0; i < accountsDatabase.length;i++)
                {
                    String tempName = input.nextLine();
                    String tempPassword = input.nextLine();
                    accountsDatabase[i] = new loginAccount(tempName, tempPassword);
                }
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    public LoginForm(String title)
    {
        super(title);

        txtUsername.setEditable(true);
        pwdFieldPassword.setEditable(true);
        setContentPane(mainLoginPanel);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setPreferredSize(new Dimension( 400, 400));
        pack();
        this.setVisible(true);

        btnClear.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                txtUsername.setText("");
                pwdFieldPassword.setText("");
            }
        });
        btnLogin.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                AuthenticateUser(txtUsername.getText(), new String (pwdFieldPassword.getPassword()));
                }
        });
    }

    public void AuthenticateUser(String usernameInput, String passwordInput)
    {
        boolean matchNotFound = true;
        for(int i = 0; i < accountsDatabase.length; i++) {
            if (accountsDatabase[i].username.equals(usernameInput) && accountsDatabase[i].password.equals(passwordInput)){
                matchNotFound = false;
                break;
            }
        }

        if(matchNotFound)
        {
            System.out.println("Match not found!");
        }

        else
        {
            setVisible(false);
            dispose();
            //System.out.println("Match found!");
            StockDatabaseForm nextPage = new StockDatabaseForm("nextPage");
            nextPage.setVisible(true);
        }
    }

    private void createUIComponents() {
        // TODO: place custom component creation code here
    }
}
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class StockDatabaseForm extends JFrame{
    private JPanel mainStockDBPanel;
    private JTable dataTableStock;
    private JPanel dataTablePanel;
    private JPanel inputsPanel;
    private JButton btnDelete;
    private JButton btnAdd;
    private JButton btnEdit;
    private JPanel btnPanel;
    private JPanel itemDataPanel;
    private JLabel lblItemName;
    private JTextField txtItemName;
    private JLabel lblPrice;
    private JTextField txtItemPrice;

    static StockDatabase stockDatabaseInstance = new StockDatabase();

    public static void main(String[] args)
    {
        StockDatabaseForm page = new StockDatabaseForm("Stock Database");
        page.setVisible(true);

        try {
            Scanner input = new Scanner(new File("src//testStockData.txt"));
            input.useDelimiter("\n");

            while(input.hasNext())
            {
                for(int i = 0; i < stockDatabaseInstance.itemsInStock.length;i++)
                {
                    String tempName = input.nextLine();
                    float tempPrice = Float.valueOf(input.nextLine());
                    stockDatabaseInstance.itemsInStock[i] = new StockItem(tempName, tempPrice);
                }
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    public StockDatabaseForm(String title)
    {
        super(title);
        setContentPane(mainStockDBPanel);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setPreferredSize(new Dimension( 500, 500));
        pack();
        this.setVisible(true);
    }

    private void createUIComponents() {
        // TODO: place custom component creation code here
    }
}
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "javax.swing.AbstractButton.setText(String)" because "<local8>" is null
    at StockDatabaseForm.$$$setupUI$$$(StockDatabaseForm.java)
    at StockDatabaseForm.<init>(StockDatabaseForm.java:51)
    at LoginForm.AuthenticateUser(LoginForm.java:94)
    at LoginForm$2.actionPerformed(LoginForm.java:69)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
    at java.desktop/java.awt.Component.processEvent(Component.java:6379)
    at java.desktop/java.awt.Container.processEvent(Container.java:2263)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

I have been trying to fix this error. Can someone go through this code and see if they can advise what to do to fix these errors since they are affecting the project's functionality, and my own personal mental health (this is for a uni assignment).

  • 1) See [What is a stack trace, and how can I use it to debug my application errors?](http://stackoverflow.com/q/3988788/418556) & [What is a Null Pointer Exception, and how do I fix it?](http://stackoverflow.com/q/218384/418556) 2) The stack trace is pointing to this line.. `setContentPane(mainStockDBPanel);`. There's only one thing in that line of code that could be `null`. – Andrew Thompson Jan 09 '21 at 13:05

1 Answers1

0

I think you need inizialite the panel. Try with this:

public StockDatabaseForm(String title)
    {
        super(title);
        mainStockDBPanel panel = new mainStockDBPanel();
        setContentPane(panel);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setPreferredSize(new Dimension( 500, 500));
        pack();
        this.setVisible(true);
    }
Elvis
  • 75
  • 6