NullPointer bei ActionCommand in Array

Dixi86

Neues Mitglied
Hallo,

Ich bin gerade dabei mir Java beizubringen. Dazu arbeite ich jetzt schon ein bisschen mit dem Gailer-net Tutorial und bin nun bei den Swing Componenten angekommen.
Eine Aufgabe ist da nun eine Art PIN-Abfrage einzubauen... Ich glaube ich bin kurz vor dem breakthrough der Aufgabe :applaus: aber bleibe leider an gewisse Basics hängen.

Ich will die ActionCommands der geklickten JButtons in ein Array packen und bekomme ein NullPointer. Irgendwas mache ich beim befüllen falsch. ANMERKUNG: Eigentlich sind es neun JButtons, habe aber aus Gründen der Übersichtlichkeit mal nur drei angeben.

Java:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import java.util.*;

 public class TwoButtons extends JFrame implements ActionListener
 {
	 JPanel panel;	
	 String[] CodeArr[];
	 int zaehler;
	 
	 
	 TwoButtons(){

		 panel = new JPanel();
		 add(panel);
		 
		JButton Zero = new JButton("0");
		JButton One = new JButton("1");
		JButton Two = new JButton("2");
		
		 Zero.setActionCommand("0");   // set the  command 
		 One.setActionCommand("1"); // set the  command  
		 Two.setActionCommand("2");   // set the  command

		 panel.setLayout( new FlowLayout());
		 panel.add(Zero);
		 panel.add(One);
		 panel.add(Two);

		 Zero.addActionListener(this);
                 One.addActionListener(this);
                 Two.addActionListener(this);
		 
	 }
	 
	 public void actionPerformed(ActionEvent schit){ 
		zaehler++;
		String test = schit.getActionCommand();
		
		for (int j = 0;j < 3; j++){
		Arrays.fill(CodeArr[j], test);
	 	}
		if (zaehler == 3){
		 CodeValidator();
		}
		
	 }

	private void CodeValidator(){
		 String[] Validator = {"0", "0", "0"};
 		 
		 if (Arrays.equals(Validator, CodeArr)){
			 //panel.setBackground(Color.green);
			 System.exit(0);
		 }
		 else {
			 panel.setBackground(Color.red);
		 }
	 }

	 
	 
public static void main (String[] args){
	
	TwoButtons TB = new TwoButtons();
	
	TB.setSize(300,175);
	TB.setVisible(true);

	}
}



Wäre coole wenn einer mal gucken könnte was da schief geht. Über Anmerkungen über besseren Code bin ich dankbar, solange sie nicht allzu ernüchternd sind 😀

Besten Dank schonmal,
Dixi
 
Der Fehler ist wohl in deinem Action Performed.

Da legst du in deinem code array in jeder posi die aktuelle zahl.

Sprich drücke ich auf 0 habe ich da drei mal 0 drin ..

Da müsste einfach stehen

codearray[zaehler] = shit.getActionCommand();

Die Array.fill() Methode ist gänzlich falsch angewendet. Da musst du nochmal in die API schauen.

Die Nullpointer kommt daher, weil das codearray nicht initialisiert worden ist:

codearray = new String[3];

Wie bei jedem Anfänger muss ich auch hier darauf hinweisen, dass per Konvention Variablen immer mit einem kleinem Buchstaben anfangen und Klassen mit einem großen, paketnamen immer klein sind und Konstanten nur aus Großbuchstaben bestehen.
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben