Domanda

I want to create an app which changes windows (panels) like forms in Visual Studio (C#). I have a lot of errors, and I don't understand why; please help me to understand what I'm doing wrong.

Here are my error details:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Interfata.InterfataDB$2.actionPerformed(InterfataDB.java:83)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

and here's my app code:

package Interfata;

import java.awt.EventQueue;

import javax.swing.JFrame;
import java.awt.CardLayout;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class InterfataDB {

    private JFrame frame;
    private JTextField textFieldNameInsert;
    private JTextField textFieldAdressInsert;
    private JTextField textFieldSelect;
    private JPanel panelMenu;
    private JPanel panelInsert;
    private JPanel panelSelect;
    private JPanel panelUpdate;
    private JPanel panelDelete;

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

    /**
     * Create the application.
     */
    public InterfataDB() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(new CardLayout(0, 0));

        final JPanel panelMenu = new JPanel();
        frame.getContentPane().add(panelMenu, "name_294128049815194");
        panelMenu.setLayout(null);
        panelMenu.setVisible(true);

        JLabel lblWelcomeToDb = new JLabel("Welcome to DB Work Station");
        lblWelcomeToDb.setBounds(141, 27, 137, 14);
        panelMenu.add(lblWelcomeToDb);

        JLabel lblMenu = new JLabel("Menu");
        lblMenu.setBounds(179, 52, 34, 14);
        panelMenu.add(lblMenu);

        JLabel lblChooseOneOf = new JLabel("Choose one of the following options:");
        lblChooseOneOf.setBounds(122, 93, 185, 14);
        panelMenu.add(lblChooseOneOf);

        JButton btnSelect = new JButton("Select");
        btnSelect.setBounds(35, 200, 91, 23);
        panelMenu.add(btnSelect);

        JButton btnInsert = new JButton("Insert");
        btnInsert.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                panelInsert.setVisible(true);
                panelSelect.setVisible(false);
                panelUpdate.setVisible(false);
                panelDelete.setVisible(false);
            }
        });
        btnInsert.setBounds(35, 150, 91, 23);
        panelMenu.add(btnInsert);

        JButton btnUpdate = new JButton("Update");
        btnUpdate.setBounds(277, 150, 91, 23);
        panelMenu.add(btnUpdate);

        JButton btnDelete = new JButton("Delete");
        btnDelete.setBounds(277, 200, 91, 23);
        panelMenu.add(btnDelete);

        final JPanel panelInsert = new JPanel();
        frame.getContentPane().add(panelInsert, "name_294130167783866");
        panelInsert.setLayout(null);
        panelInsert.setVisible(false);

        JLabel lblWelcomeToInsert = new JLabel("Welcome to Insert option");
        lblWelcomeToInsert.setBounds(157, 45, 128, 14);
        panelInsert.add(lblWelcomeToInsert);

        JLabel lblName = new JLabel("Name");
        lblName.setBounds(80, 94, 46, 14);
        panelInsert.add(lblName);

        JLabel lblAdress = new JLabel("Adress");
        lblAdress.setBounds(80, 129, 46, 14);
        panelInsert.add(lblAdress);

        textFieldNameInsert = new JTextField();
        textFieldNameInsert.setBounds(157, 91, 86, 20);
        panelInsert.add(textFieldNameInsert);
        textFieldNameInsert.setColumns(10);

        textFieldAdressInsert = new JTextField();
        textFieldAdressInsert.setBounds(157, 126, 86, 20);
        panelInsert.add(textFieldAdressInsert);
        textFieldAdressInsert.setColumns(10);

        JButton btnRunInsert = new JButton("Run Insert");
        btnRunInsert.setBounds(311, 217, 91, 23);
        panelInsert.add(btnRunInsert);

        final JPanel panelSelect = new JPanel();
        frame.getContentPane().add(panelSelect, "name_294134957448744");
        panelSelect.setLayout(null);
        panelSelect.setVisible(false);

        JLabel lblWelcomeToSelect = new JLabel("Welcome to Select option:");
        lblWelcomeToSelect.setBounds(144, 49, 132, 14);
        panelSelect.add(lblWelcomeToSelect);

        JLabel lblYourResultWill = new JLabel("Your result will apear here");
        lblYourResultWill.setBackground(Color.CYAN);
        lblYourResultWill.setBounds(84, 92, 241, 96);
        panelSelect.add(lblYourResultWill);

        JButton btnRunSelect = new JButton("Run Select");
        btnRunSelect.setBounds(310, 225, 91, 23);
        panelSelect.add(btnRunSelect);

        textFieldSelect = new JTextField();
        textFieldSelect.setBounds(10, 226, 266, 20);
        panelSelect.add(textFieldSelect);
        textFieldSelect.setColumns(10);

        JLabel lblEnterScriptHere = new JLabel("Enter script here:");
        lblEnterScriptHere.setBounds(10, 201, 91, 14);
        panelSelect.add(lblEnterScriptHere);

        final JPanel panelUpdate = new JPanel();
        frame.getContentPane().add(panelUpdate, "name_294154843658550");
        panelUpdate.setLayout(null);
        panelUpdate.setVisible(false);

        JLabel lblWelcomeToUpdate = new JLabel("Welcome to Update option");
        lblWelcomeToUpdate.setBounds(156, 66, 137, 14);
        panelUpdate.add(lblWelcomeToUpdate);

        final JPanel panelDelete = new JPanel();
        frame.getContentPane().add(panelDelete, "name_294158967970281");
        panelDelete.setLayout(null);
        panelDelete.setVisible(false);

        JLabel lblWelcomeToDelete = new JLabel("Welcome to Delete option");
        lblWelcomeToDelete.setBounds(150, 66, 136, 14);
        panelDelete.add(lblWelcomeToDelete);
    }

}
È stato utile?

Soluzione

Your problem is you are declaring member variables (panelInsert, panelSelect, etc.):

public class InterfataDB {

    ...
    private JPanel panelInsert;
    private JPanel panelSelect;
    private JPanel panelUpdate;

but in your initialize() method, instead of using your member variables, you are declaring variables again, like this:

...
final JPanel panelSelect = new JPanel();
final JPanel panelInsert = new JPanel();

Instead of that, in your initialize() method you must do something like this:

this.panelSelect = new JPanel();
this.panelInsert = new JPanel();

Kind regards,

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top