Hallo Freunde. Ich versuche meinen JPanels, die in einem Array gespeichert sind, eine neue Hintergrundefarbe zuzuweisen. Doch so recht will das nicht funktionieren.
Ich bekomme die Meldung
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
tja, aber vielleicht null?
du brauchst nicht deinen Code verteidigen, dass ein Fehler drin ist, ist so gewiss wie die Weite des Universums,
die Fehlermeldung kommt nicht aus Spass
Es wird hier ein Panel mit einer Zahl in ihm erstellt. Wichtig sind eigentlich nur die beiden Methoden add_card() und createJPanel(). Der Rest ist nur eine Hilfe, damit die beiden Hauptmethoden nicht zu unübersichtlich werden. getSettedNumbers() dient nur dazu, der anderen Klasse mitzuteilen, welche Nummern schon in ein Panel gesetzt wurde ...
wie kannst du einmal sowohl card als auch JPanel darin speichern
(cards[z] = new card(); card[z] = cards[z].add_card)
-> spricht für Object[] (edit: ok, selbst mit Object[] würde der Aufruf nicht gehen,
nochmal edit: jetzt sehe ich auch die unterschiedlichen Namen der Arrays )
als auch an anderer Stelle card.setBackground aufrufen -> spricht für JPanel[]?
es liegt nahe, dass du zwei unterschiedliche Arrays hast, eines gefüllt, das andere leer
ansonsten erkennt man aus dieser Konfusion, wie unendlich wichtig ein komplett geposteter Code von der main-Methode bis zum letzten Detail ist,
lange Methoden wie createJPanel(int i) kann man dabei tatsächlich temporär auf
> return new JPanel();
oder so vereinfachen
card ist vom typ JPanel und cards vom Typ card. Ich versteh allerdings anhand von der class card net was du bis vorhast/machst. Post mal den kompletten Code aber es wäre schön, wenn du vorher Deklarationen lt den Richtlinien für Groß-und Kleinschreibung änderst. (Klassen Groß etc)
edit die 3te : card ist vom Typ JPanel, cardz auch und cards vom Typ card...
Also die Deklarationen sind echt ein grauß...
Tut mir leid, dass meine Namen so verwirrend sind. Das kommt, wenn man einfach drauflosprogrammiert und sich zu anfang noch gar nicht im klaren ist, was es alles braucht ...
Ich werde in Zukunft die Namensgebungsvorgaben beachten.
Ich habe jetzt den Fehler gefunden. Es lag daran, dass ich ich 50 Panel aufrufen wollte, jedoch nur 49 existierten. Eine Schleife beim erstellen der Panels lief einmal zu wenig durch ... Das Ganze funktioniert jetzt. Vielen Dank für die Hilfe.
Ich dachte nur, wenn ich meinen ganzen Code hier reinposte, wird es noch unübersichtlicher als es eh schon ist. Aber ich werde das in Zukunft machen und den Code auf das wesentliche Kürzen!