NullPointerException

hasha

Mitglied
Hallo! :)

Ich bin grade dabei Vier Gewinnt zu programmieren und habe ein Problem beim Programmieren einer Methode, die dafür sorgt, dass ein Stein in das VierGewinntFeld geworfen wird. Falls ich auf das Feld klicke, kriege ich eine NullPointerException.


Das ist die Klasse MouseListener, wo das Problem auftaucht:
(Die Variable access gibt an, ob der Spieler an der Reihe ist oder nicht. Die Variable red gibt an, ob der Spieler mit den roten Steinen oder den Gelben spielt.)
Java:
//MouseListener
  class CustomMouseListener implements MouseListener{
    public void mouseClicked(MouseEvent event) {
      taChat.append("Mouse Clicked: ("+event.getX()+", "+event.getY() +")" + "\n");
      
      if (access) {
        int x = event.getX();
        int y = event.getY();
        
        for (byte i = 0;i<7;i++) {
          if (x>i*89 && x<(i+1)*89) {
            byte j = this.searchJ(i);
            
            if (j == 6) {
              
            } // end of if
            else {
              byte key = 0;
              
              if (red == true) {
                key = 1;
                lbFeld[i][j].setIcon(new ImageIcon("red.png"));
                lbFeld[i][j].setKey(key);
              } // end of if
              else {
                key = 2;
                lbFeld[i][j].setIcon(new ImageIcon("yellow.png"));
                lbFeld[i][j].setKey(key);
              } // end of if-else
              
              hClient.sendTurn(i,j,key);
            } // end of if-else
            
            break;
          } // end of if
        } // end of for
        
        hClient.send(hClient.arrayToString(lbFeld));
      } // end of if
      
      else {
        taChat.append("Du bist nicht dran!" + "\n");
      } // end of if-else
      
      
    }
    
    public void mousePressed(MouseEvent e) {
    } 
    
    public void mouseReleased(MouseEvent e) {
    }
    
    public void mouseEntered(MouseEvent e) {
    }
    
    public void mouseExited(MouseEvent e) {
    }
    
    
    public byte searchJ (int pI) {
      byte j = 5;
      while (j>=0 && lbFeld[pI][j].getKey()==0) {
        j--;
      } // end of for
      if (j<0) {
        return 6;
      } // end of if
      else {
        return j;
      } // end of if-else
    }  
  }


Falls ich auf das Feld in der GUI klicke, wird im Editor folgendes angezeigt:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at FirstClientGUI$CustomMouseListener.mouseClicked(FirstClientGUI.java:310)
at java.awt.Component.processMouseEvent(Component.java:6508)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)







Vorhin sah die Methode mouseClicked noch so aus, da funktionierte es noch. Ich habe auch was an der Methode searchJ geändert, davon habe ich aber den ursprünglichen Code nicht mehr. Wenn ich mouseClicked wieder umändere, geht es immer noch nicht, also liegt es wohl an der Methode searchJ.
Java:
public void mouseClicked(MouseEvent event) {
taChat.setText("Mouse Clicked: ("+event.getX()+", "+event.getY() +")");
 
int x = event.getX();
int y = event.getY();
 
if (x>250 && x<330 && y>45 && y<480) {
int i = this.getI(x);
int j = this.searchJ(i);
lbFeld[i][j].setIcon(new ImageIcon("yellow.png"));
lbFeld[i][j].setKey(2);
} // end of if
}

Danke im Voraus! :)

EDIT:
Das VierGewinnt-Feld ist ein zweidimensionaler Array bestehend aus JLabeln mit den Längen 7 und 6. Jedes JLabel kriegt einen Key zugewiesen, falls kein Stein auf dem Array ist, ist der Key = 0, falls der Stein rot ist, ist der Key = 1 und falls er geld ist, ist der Key = 2.
Jedes JLabel hat eine Länge von 89 x 80.
 
Zuletzt bearbeitet:

arilou

Bekanntes Mitglied
Nun, das ist mit nur einem Codefragment nicht beantwortbar; die Fehlermeldung sagt

FirstClientGUI$CustomMouseListener.mouseClicked(FirstClientGUI.java:310)

der Fehler sei in Zeile :310, und auf jeden Fall in .mouseClicked (also nicht in .searchJ !), aber die Zeilennummern stimmen nunmal nicht mit dem hier von dir angegebenen Code überein...
 
Zuletzt bearbeitet:

Joose

Top Contributor
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at FirstClientGUI$CustomMouseListener.mouseClicked(FirstClientGUI.java:310)

Hier steht genau in welcher Datei und welcher Zeile die Exception auftritt.
Leider können wir nicht nachvollziehen um welche Zeile es sich bei deinem Code hier handelt.

Aber suche einfach die Zeile und überlege warum dort ein Objekt "null" ist.
 

hasha

Mitglied
Die Zeile 310 entspricht der Zeile 38. (hClient.send(hClient.arrayToString(lbFeld));) Die Methode arrayToString ist dafür da, das Feld in einen String umzuwandeln, um ihn dann an den Server schicken zu können. In der Anwendung kann man nähmlich nur Strings an den Server schicken.

Ich habe die Methode arrayToString nun folgendermaßen geändert und frage einfach ab, ob das Feld gleich null ist (pBaustein ist ein JLabel):
Java:
public String arrayToString(Baustein[][] pBaustein){
    if (pBaustein != null) {
      String erg = "Feld:";
      for (int i = 0;i<7;i++) {
        for (int j=0;j<6;j++) {
          int key = pBaustein[i][j].getKey();
          erg += i + j + key; 
        } // end of for
      } // end of for
      return erg;
    } // end of if
    else {
      return "";
    } // end of if-else
  }

Aber auch das hilft nicht..

Der Array sollte aber eigentlich sowieso nie null sein. In der GUI wird er folgendermaßen erstellt:
Java:
public Baustein[][] lbFeld = new Baustein[7][6];
public FirstClientGUI(){

//Spielfeld
    for (int i=0;i<7;i++) {
      for (int j=0;j<6;j++) {
        lbFeld[i][j] = new Baustein("empty.png");
        lbFeld[i][j].setKey(0);
        //panelFeld.add(lbFeld[i][j]);
        lbFeld[i][j].setBounds(290 + i*89, 75+j*80, 89, 80);
        contentPane.add(lbFeld[i][j]);
      } // end of for
    } // end of for
    panelFeld.setBounds(290, 75, 623, 480);
    panelFeld.addMouseListener(new CustomMouseListener());
    contentPane.add(panelFeld);
}

Die Klase pBaustein sieht so aus:
Java:
 import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;


class Baustein extends JLabel
{
  private int key;                         
  //private JLabel label;
  
  public Baustein(String pImage){
    super.setIcon(new ImageIcon (pImage));
  }
  
  public void setIcon (int pKey) {
    if (pKey == 0) {
      super.setIcon(new ImageIcon ("empty.png"));
    } // end of if
    else if (pKey == 1) {
      super.setIcon(new ImageIcon ("red.png"));
    } // end of if
    else if (pKey == 2) {
      super.setIcon(new ImageIcon ("yellow.png"));
    } // end of if
  }
  
  public void setKey(int pKey){
    key = pKey;
  }
  
  public int getKey(){
    return key;
  }
  
}




Ganz abgesehen davon, habe ich die Zeile 310 mal auskommentiert, die NullPointerException kriege ich nicht mehr, aber in der GUI tut sich sowieso nichts wenn ich auf das Feld klicke. Es werden lediglich die Koordinaten des Klickpunktes angezeigt, aber keines der JLabel wird geändert.
Wenn ich aber beispielsweise lbFeld[2][3].setIcon(2); in den ActionListener eines Knopfes reinpacke, dann funktioniert das Ganze per Knopfdruck.


Ich habe die Zeilen 22 und 27 des MouseListeners (ganz oben im ersten Beitrag) folgendermaßen geändert, aber auch das bringt nichts..:
Java:
 lbFeld[i][j].setIcon(key);
lbFeld[i][j].setIcon(key);


(Die Variable access habe ich übrigens auf true gesetzt.)
Sonst habe ich keine Idee warum nicht einmal das funktioniert. :S


So das ist jetzt einiges an Quelltext, ich hoffe das schreckt euch nicht ab. ^^
 
Zuletzt bearbeitet:

Joose

Top Contributor
Die Zeile 310 entspricht der Zeile 38. (hClient.send(hClient.arrayToString(lbFeld));)

Passt, es ist nicht die Methode "arrayToString" das Problem sondern das Element "hClient" ist ganz einfach "null"!
Erklärung:
Der Fehler tritt in Zeile X auf, daher muss du in Zeile X schauen welche Objekte verwendet werden. In diesem Fall ist es nur "hClient".
Daher muss dieses Objekt null sein.
 
Zuletzt bearbeitet:

hasha

Mitglied
Das macht Sinn, danke! :) Ich habe einfach einen weiteren boolean ergänzt, der erst dann auf true gesetzt wird, wenn hClient intialisiert wurde, jetzt taucht keine NullPointerException auf. Die Zeile 6 (erster Beitrag) sieht jetzt so aus:
Java:
 if (access==true && verbindung == true) {


Allerdings ändert sich an der GUI sowieso nichts, es wird "kein Stein in das Feld geworfen". Hast du/Habt ihr eine Idee warum?

EDIT:
So, habe den Fehler jetzt gefunden! Danke nochmal.:)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
C Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 10
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
berserkerdq2 Nullpointerexception, obwohl ich Array initialisiere? Java Basics - Anfänger-Themen 1
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
Jose05 Nullpointerexception Java Basics - Anfänger-Themen 7
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
H Java NullPointerException Java Basics - Anfänger-Themen 4
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
L Threads Komischer NullPointerException Java Basics - Anfänger-Themen 2
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
D NullPointerException in foreach loop Java Basics - Anfänger-Themen 1
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
D NullPointerException im Array Java Basics - Anfänger-Themen 4
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
V NullPointerException Java Basics - Anfänger-Themen 2
S NullPointerException während ResultSet Java Basics - Anfänger-Themen 7
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
scratchy1 NullPointerException Java Basics - Anfänger-Themen 19
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
W Optional<T> - NullPointerException Java Basics - Anfänger-Themen 37
Jascha NullPointerException vs NumberFormatException Java Basics - Anfänger-Themen 5
L Variablen NullPointerException bei Dateigröße (Nr.1) Java Basics - Anfänger-Themen 4
M Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 13
D NullPointerException umgehen Java Basics - Anfänger-Themen 17
Z Objekt Array führt zum NullPointerException Java Basics - Anfänger-Themen 2
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
W ArrayList NullPointerException Java Basics - Anfänger-Themen 4
A NullPointerException Java Basics - Anfänger-Themen 6
S NullPointerException Java Basics - Anfänger-Themen 4
T OOP Wörterbuch NullPointerException Java Basics - Anfänger-Themen 4
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
O NullPointerException Java Basics - Anfänger-Themen 2
M Interpreter-Fehler Feld NullPointerException Java Basics - Anfänger-Themen 4
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
E Compiler-Fehler nullPointerException in verschachteltem Modell Java Basics - Anfänger-Themen 6
DaCrazyJavaExpert Threads NullPointerException Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
kodela NullPointerException Java Basics - Anfänger-Themen 12
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
H NullPointerException obwohl Objekt angelegt wurde Java Basics - Anfänger-Themen 1
A Threads Reentrantlock | NullpointerException möglicher Deadlock? Java Basics - Anfänger-Themen 0
K Compiler-Fehler NullPointerException lösen Java Basics - Anfänger-Themen 16
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
P Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 1
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S Methoden Methode funktioniert nicht | NullPointerException Java Basics - Anfänger-Themen 6
F NullpointerException bei zweidimensionalem Array Java Basics - Anfänger-Themen 2
Z OOP - Array ständig NullPointerException Java Basics - Anfänger-Themen 4
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
T Nullpointerexception und es wird nichts angezeigt Java Basics - Anfänger-Themen 15
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
B ProcessMessage NullPointerException Java Basics - Anfänger-Themen 11
shiroX Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 9
MrSnake ItemListener mit NullPointerException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
M NullPointerException Java Basics - Anfänger-Themen 8
B Vererbung NullPointerException Java Basics - Anfänger-Themen 38
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
G NullPointerException Java Basics - Anfänger-Themen 1
J NullpointerException Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung Java Basics - Anfänger-Themen 4
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
D Java Fehler: NullPointerException Java Basics - Anfänger-Themen 1
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
X Problem mit NullPointerException Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Hilfestellung bei einer NullPointerException Java Basics - Anfänger-Themen 1
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
L NullPointerException Java Basics - Anfänger-Themen 11
M Nullpointerexception??? Java Basics - Anfänger-Themen 2
W NullPointerException bei DefaultListModel Java Basics - Anfänger-Themen 5
N NullPointerException bei Konsolenausgabe Java Basics - Anfänger-Themen 5
J Klasse in Klasse; NullPointerException Java Basics - Anfänger-Themen 8
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
Q NullPointerException Java Basics - Anfänger-Themen 5
T Threads MultiThreading NullPointerException Java Basics - Anfänger-Themen 7
K NullPointerException wird geworfen, bitte um Hilfe! Java Basics - Anfänger-Themen 7
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3
M Compiler-Fehler Java suckt - java.lang.NullPointerException Java Basics - Anfänger-Themen 12
S Array wird nicht übernommen NullPointerException Java Basics - Anfänger-Themen 6
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
L Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 2
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
B JRadioButton wechsel gibt NullPointerException Java Basics - Anfänger-Themen 2
L NullPointerException lösen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben