Reputation: 3
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*
Upvotes: 0
Views: 220
Reputation: 21114
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();
}
}
Upvotes: 1