Forum Stats

  • 3,769,507 Users
  • 2,252,970 Discussions
  • 7,875,064 Comments

Discussions

Null Pointer Exception

Hello all. I am a newbie. I have completed one college class on Java. I am trying to develop a simple tic-tac-toe game. I have 2 classes. One is TicTacToe and the other is TicTacToeBoard. Here is the code I have so far.

class TicTacToe {
TicTacToeBoard board = new TicTacToeBoard();     private int moves = 0;
    private int Gamemoves;
        public static void main(String[] args) {         TicTacToe game = new TicTacToe();
        game.startGame();
    }
    public void startGame() {
        board.setVisible(true);
    }
       
    public int getMoves() {
        return moves;
    }   
    public void setMoves(int moves) {
        this.moves = moves;
    }
   
}

public class TicTacToeBoard extends javax.swing.JFrame {
    TicTacToe game;
    int mmSet, ulSet, umSet, urSet, mlSet, mrSet, llSet, lmSet, lrSet;
    int NumMoves = 0;

public TicTacToeBoard() {
        initComponents();
    } private void btnMMStateChanged(javax.swing.event.ChangeEvent evt) {                                           if (mmSet == 0) {
            mmSet = 1;             NumMoves = game.getMoves();             System.out.println(NumMoves);
            btnMM.setIcon(new javax.swing.ImageIcon(getClass().getResource("/tic/tac/toe/images/X.png")));
            stripMouseListeners((java.awt.Component) btnMM);         } else {
    }                                 
    }

The problem occurs 12 of TicTacToeBoard class. I have read about this problem and it seems like my problem is that I am not properly using the game variable. I am not sure where to go from here. Here is the stack trace.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at tic.tac.toe.TicTacToeBoard.btnMMStateChanged(TicTacToeBoard.java:179)

at tic.tac.toe.TicTacToeBoard.access$400(TicTacToeBoard.java:15)

at tic.tac.toe.TicTacToeBoard$5.stateChanged(TicTacToeBoard.java:114)

at javax.swing.AbstractButton.fireStateChanged(AbstractButton.java:1913)

at javax.swing.AbstractButton$Handler.stateChanged(AbstractButton.java:2333)

at javax.swing.DefaultButtonModel.fireStateChanged(DefaultButtonModel.java:349)

at javax.swing.DefaultButtonModel.setArmed(DefaultButtonModel.java:188)

at javax.swing.plaf.basic.BasicButtonListener.mousePressed(BasicButtonListener.java:233)

at java.awt.Component.processMouseEvent(Component.java:6502)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)

at java.awt.Component.processEvent(Component.java:6270)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4861)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4489)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.Window.dispatchEventImpl(Window.java:2719)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)

at java.awt.EventQueue.access$200(EventQueue.java:103)

at java.awt.EventQueue$3.run(EventQueue.java:694)

at java.awt.EventQueue$3.run(EventQueue.java:692)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:708)

at java.awt.EventQueue$4.run(EventQueue.java:706)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Can someone please explain the proper way for me to try to get / set the number of moves from the TicTacToeBoard class?

Thanks,

David

Tagged:
This discussion has been closed.