Ich versuche, auf eine Methode innerhalb einer anderen Klasse zuzugreifen, aber ich habe bereits einige Konstruktoren in der Klasse, die einen Fehler verursacht, wenn ich versuche, eine Instanz in einem anderen zu erstellen Klasse.Java-Fehler: NullPointerException wegen fehlenden Konstruktoren
EDIT: Ich weiß, ich muss einen Konstruktor ausfüllen, aber ich weiß nicht, was ich hineinlegen soll. Erstelle ich einen weiteren JFrame in der ArrayControl-Klasse oder was?
Dies ist der Fehler, den ich bekomme, wenn ich es laufen:
Exception in thread "main" java.lang.NullPointerException
at Position.ArrayControl.updatePosition(ArrayControl.java:10)
at Display.Display.<init>(Display.java:39)
at Main.Game.<init>(Game.java:19)
at Main.Launch.main(Launch.java:6)
Dies ist, wo der Fehler passiert:
Ich versuche, den Zugangpublic class ArrayControl{
Display display = new Display(); // Error here asking for a JFrame or String, int, int
public void updatePosition(String name, int x, int y){
display.updateGrid(name, x, y, display.getGrid());
}
}
Die "Display" Klasse:
public class Display {
public JPanel panel = new JPanel();
public ArrayControl arrayC = new ArrayControl();
public JFrame frame;
JLabel[][] grid= new JLabel[5][5];
public JFrame getFrame() {
return frame;
}
public Display(JFrame frame){
this.frame = frame;
}
private String title;
private int width, height;
Color sky = new Color(137, 182, 255);
Color enemyPortal = new Color(154, 91, 193);
//Creating a display function that takes in a title, the width (pixels) and height (pixels)
public Display(String title, int width, int height){
this.title = title;
this.width = width;
this.height = height;
createDisplay();
arrayC.updatePosition("Test", 2, 3);
}
Ich realisiere, dass dies eine dumme Frage sein kann und die Antwort ist mir im Gesicht grell, aber alle Hilfe wird geschätzt. Danke.
Sicherlich möchten Sie Ihre Instanz von Display an ArrayControl übergeben, da Sie kein anderes Display aktualisieren möchten, oder? Ich bezweifle, dass dies der Fall ist, also übergebe die aktuelle Instanz von Display mit 'this' an einen Konstruktor von ArrayControl, der ein Display-Objekt als Parameter akzeptiert und das Display-Objekt dem Array 'display' innerhalb von ArrayControl zuweist. –
Ihre Annahme ist richtig! Ich möchte keine andere Anzeige aktualisieren. Ich bin nicht sicher, wie man das macht, herumspielen mit der Idee, die mir gerade Stapelüberlauffehler gab –