0

ive been looking a while and unable to find a solution to this one. Basically on the code below the line Circle[][] board = new Circle[rows][column]; is giving me issues when i try to assign any values to these circles due to them being null. Ive been trying to add curly brackets like this Circle[][] board = new Circle(0)[rows][column]; which would fix the issue but then it says Array type expected; found javafx.scene.shape.Circle Ive added my code for this class as well as my error code. If any other code is required let me know and thanks in advance for any help. Code:

package com.company;


import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class SetupBoard {

    public void main(Stage stage) {
        int rows = 8;
        int column = 8;
        Circle[][] board = new Circle[rows][column];
        int rowcounter = 0;
        int columncounter = 0;
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < column; j++) {
                board[i][j].setRadius(0);
            }
        }


            while (rowcounter < 3) {
                if (columncounter == 9) {
                    columncounter = 0;
                }
                if (columncounter == 8) {
                    columncounter = 1;
                }
                while (columncounter < 8) {
                    board[rowcounter][columncounter].setRadius(20);
                    columncounter = columncounter + 2;
                }
                rowcounter++;
            }

            rowcounter = 5;
            columncounter = 1;

            while (rowcounter < 8) {
                if (columncounter == 9) {
                    columncounter = 0;
                }
                if (columncounter == 8) {
                    columncounter = 1;
                }
                while (columncounter < 8) {
                    board[rowcounter][columncounter].setRadius(20);
                    columncounter = columncounter + 2;

                    int centrex;
                    int centrey;
                    centrex = 75 + (50 * rowcounter);
                    centrey = 125 + (50 * columncounter);

                    board[rowcounter][columncounter].setStroke(Color.BLUE);
                    board[rowcounter][columncounter].setFill(Color.BLUE);
                    board[rowcounter][columncounter].setCenterX(centrex);
                    board[rowcounter][columncounter].setCenterY(centrey);


                }
                rowcounter++;
            }


            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < column; j++) {
                    //System.out.print(board[i][j]);
                    //Group root = new Group((board[i][j]));
                    //Scene scene = new Scene(root, 600, 600);
                    //stage.setScene(scene);
                    //stage.show();
                }
                System.out.println("");
            }

        }


    }

and the error:

> Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Node.fireEvent(Node.java:8411)
    at javafx.scene.control.Button.fire(Button.java:185)
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:352)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:388)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:387)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
    at com.sun.glass.ui.View.notifyMouse(View.java:937)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
    ... 48 more
Caused by: java.lang.NullPointerException
    at com.company.SetupBoard.main(SetupBoard.java:19)
    at com.company.Screens.MainWindow.BtnPress_start(MainWindow.java:25)
    ... 58 more*

1 Answer 1

1
Circle[][] board = new Circle[rows][column];

Here you just initialized the array.
That means you told the JVM "hey! Look, I need this space for my elements to be stored here!".
The JVM then responded by giving you a pointer to that space. Each matrix position represent a point inside that empty space.

 ____________________
| null | null | null |
|______|______|______|
| null | null | null |
|______|______|______|
| null | null | null |
|______|______|______|

for (int i = 0; i < rows; i++) {
   for (int j = 0; j < column; j++) {
      board[i][j].setRadius(0);
   }
}

Here you're trying to call setRadius an a null reference, which is the default valid value for an empty space. Before doing that you need to initialize the Circle(s), in the same way

for (int i = 0; i < rows; i++) {
   for (int j = 0; j < column; j++) {
      board[i][j] = new Circle();
   }
}
Sign up to request clarification or add additional context in comments.

1 Comment

@D.McCann no problem. It happens! Remember to accept the answer if it satisfies your question.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.