Having trouble closing Windows and opening others

I am using Java8 and I am trying to move from one frame to another using the code.

Problems: The first JPanel doesn't close Second JPanel gives error when I try to close the window

Error msg:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at ex2.Main2$2.actionPerformed(Main2.java:60) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6539) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6304) at java.awt.Container.processEvent(Container.java:2239) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2297) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) at java.awt.Container.dispatchEventImpl(Container.java:2283) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) at java.awt.EventQueue$4.run(EventQueue.java:733) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Help Please.

first frame:

public class ex2 {

    private JFrame frmLogin;
    private JTextField textField;
    private JPasswordField passwordField;

//cuted the methods to start the frame

    private void initialize() {
        frmLogin = new JFrame();
        frmLogin.getContentPane().setFont(new Font("Dialog", Font.BOLD, 18));
        frmLogin.setTitle("Login");
        frmLogin.setBounds(100, 100, 400, 300);
        frmLogin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmLogin.getContentPane().setLayout(null);

        JLabel lblUserName = new JLabel("Username");
        lblUserName.setBounds(130, 40, 150, 15);
        lblUserName.setFont(new Font("Dialog", Font.BOLD, 18)); 
        frmLogin.getContentPane().add(lblUserName);

        JLabel lblPassword = new JLabel("Password");
        lblPassword.setBounds(130, 100, 150, 15);
        lblPassword.setFont(new Font("Dialog", Font.BOLD, 18));
        frmLogin.getContentPane().add(lblPassword);

        textField = new JTextField();
        textField.setBounds(130, 70, 150, 19);
        textField.setFont(new Font("Dialog", Font.BOLD, 18));
        frmLogin.getContentPane().add(textField);
        textField.setColumns(10);

        passwordField = new JPasswordField();
        passwordField.setBounds(130, 130, 150, 19);
        passwordField.setFont(new Font("Dialog", Font.BOLD, 18));
        frmLogin.getContentPane().add(passwordField);

        JButton btnLogin = new JButton("Login");
        btnLogin.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String user = textField.getText();
                String pass = String.copyValueOf(passwordField.getPassword());

                if (user.equals("Rod") && pass.equals("123")) {
                    Main2 segundo = new Main2();

                    segundo.setVisible(true);
                    ex2.setVisible(false);

                }
            }
        });
        btnLogin.setBounds(130, 190, 150, 25);
        btnLogin.setFont(new Font("Dialog", Font.BOLD, 18));
        frmLogin.getContentPane().add(btnLogin);

}

Second frame

public class Main2 extends JFrame {

    private JPanel contentPane;
    private static Main2 frame2;

    public Main2() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 400, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel lblEntramos = new JLabel("Entramos");
        lblEntramos.setFont(new Font("Dialog", Font.BOLD, 22));
        lblEntramos.setBounds(150, 100, 200, 15);
        contentPane.add(lblEntramos);

        JButton btnSair = new JButton("Sair");
        btnSair.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {             
                frame2.setVisible(false);
            }
        });     
        btnSair.setBounds(125, 175, 150, 25);
        contentPane.add(btnSair);           
    }
}

Upvotes: 0

Views: 130

Answers (1)

ADSquared
ADSquared

Reputation: 237

I reproduced your Login form using the following code and I am not getting any errors..

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

public class ex3 extends JFrame {

    public JPanel contentPane;
    private JTextField textField;
    private JPasswordField passwordField;


    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ex3 frame = new ex3();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public ex3() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);



        JLabel lblUserName = new JLabel("Username");
        lblUserName.setBounds(130, 40, 150, 15);
        lblUserName.setFont(new Font("Dialog", Font.BOLD, 18));
        contentPane.add(lblUserName);

        JLabel lblPassword = new JLabel("Password");
        lblPassword.setBounds(130, 100, 150, 15);
        lblPassword.setFont(new Font("Dialog", Font.BOLD, 18));
        contentPane.add(lblPassword);

        textField = new JTextField();
        textField.setBounds(130, 70, 150, 19);
        textField.setFont(new Font("Dialog", Font.BOLD, 18));
        contentPane.add(textField);
        textField.setColumns(10);

        passwordField = new JPasswordField();
        passwordField.setBounds(130, 130, 150, 19);
        passwordField.setFont(new Font("Dialog", Font.BOLD, 18));
        contentPane.add(passwordField);

        JButton btnLogin = new JButton("Login");
        btnLogin.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String user = textField.getText();
                String pass = String.copyValueOf(passwordField.getPassword());

                if (user.equals("Rod") && pass.equals("123")) {
                    Main2 segundo = new Main2();

                    segundo.setVisible(true);
                    setVisible(false);

                }
            }
        });
        btnLogin.setBounds(5, 196, 424, 60);
        btnLogin.setFont(new Font("Dialog", Font.BOLD, 18));
        contentPane.add(btnLogin);
    }

}

Are you sure you didn`t make any mistakes in the form code you "cuted" out?

Upvotes: 0

Related Questions