0

Every time I run my program, it always shows a NullPointerException when none of my variables are declared as null... any ideas why?

public void BrownTank() {
        while (true) {
            int speed = 2;
            Random randomGenerator = new Random();
            int Movement = randomGenerator.nextInt(4) + 1;
            if (Movement == 1) {
                jLabel2.setBounds(jLabel2.getX(), jLabel2.getY() - speed, jLabel2.getWidth(), jLabel2.getHeight());
            }

            if (Movement == 2) {
                jLabel2.setBounds(jLabel2.getX(), jLabel2.getY() + speed, jLabel2.getWidth(), jLabel2.getHeight());
            }

            if (Movement == 3) {
                jLabel2.setBounds(jLabel2.getX() - speed, jLabel2.getY(), jLabel2.getWidth(), jLabel2.getHeight());
            }

            if (Movement == 4) {
                jLabel2.setBounds(jLabel2.getX() + speed, jLabel2.getY(), jLabel2.getWidth(), jLabel2.getHeight());
            }
        }
    }

EDIT: This is the full code

package tanks;

import java.util.Random;

public class Tanks extends javax.swing.JFrame {

    public Tanks() {
        BrownTank();
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Tanks!");
        addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                formKeyPressed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("PMingLiU", 1, 16)); // NOI18N
        jLabel1.setText("◻");

        jLabel2.setFont(new java.awt.Font("PMingLiU", 1, 18)); // NOI18N
        jLabel2.setForeground(new java.awt.Color(102, 51, 0));
        jLabel2.setText("◻");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(46, 46, 46)
                        .addComponent(jLabel2))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(244, 244, 244)
                        .addComponent(jLabel1)))
                .addContainerGap(315, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(24, 24, 24)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 281, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addGap(89, 89, 89))
        );

        pack();
    }// </editor-fold>                        

    private void formKeyPressed(java.awt.event.KeyEvent evt) {                                
        int speed = 3;
        if (evt.getKeyChar() == 'w') {
            jLabel1.setBounds(jLabel1.getX(), jLabel1.getY() - speed, jLabel1.getWidth(), jLabel1.getHeight());
        }
        if (evt.getKeyChar() == 's') {
            jLabel1.setBounds(jLabel1.getX(), jLabel1.getY() + speed, jLabel1.getWidth(), jLabel1.getHeight());
        }
        if (evt.getKeyChar() == 'a') {
            jLabel1.setBounds(jLabel1.getX() - speed, jLabel1.getY(), jLabel1.getWidth(), jLabel1.getHeight());
        }
        if (evt.getKeyChar() == 'd') {
            jLabel1.setBounds(jLabel1.getX() + speed, jLabel1.getY(), jLabel1.getWidth(), jLabel1.getHeight());
        }
    }                               

    public void PlayerBullet() {

    }

    public void BrownTank() {
        while (true) {
            int speed = 2;
            Random randomGenerator = new Random();
            int Movement = randomGenerator.nextInt(4) + 1;
            if (Movement == 1) {
                jLabel2.setBounds(jLabel2.getX(), jLabel2.getY() - speed, jLabel2.getWidth(), jLabel2.getHeight());
            }

            if (Movement == 2) {
                jLabel2.setBounds(jLabel2.getX(), jLabel2.getY() + speed, jLabel2.getWidth(), jLabel2.getHeight());
            }

            if (Movement == 3) {
                jLabel2.setBounds(jLabel2.getX() - speed, jLabel2.getY(), jLabel2.getWidth(), jLabel2.getHeight());
            }

            if (Movement == 4) {
                jLabel2.setBounds(jLabel2.getX() + speed, jLabel2.getY(), jLabel2.getWidth(), jLabel2.getHeight());
            }
        }
    }

    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Tanks().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    // End of variables declaration                   
}

After editing my program for the answer... when I try to run it, it doesn't open a GUI and runs in the background.

Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433

1 Answers1

1

You should init your jLabel2.

So, before calling BrownTank(), call initComponents().

cointreau
  • 864
  • 1
  • 10
  • 21