NPE bei Verwenden von ActionListener!

Luk10

Top Contributor
Hallo,

Ich habe ein Programm geschrieben welches ein Image lädt und über ein Panel bewegen lässt!
Das Image referenziere ich über eine eigene Klasse, in welcher auch x und y koord. gespeichert sind!

Nun will ich Objekte dieser Klasse via actionListener und Button erstellen!
Dabei kriege ich eine NPE und ich finde den Fehler nicht!

Java:
package seb.zelle;

import seb.login.*;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

public class ZellenGui extends JPanel implements Runnable {
  private boolean game_running;
  private int speed;
  private boolean stopped;
  
  ArrayList<Zelle> list;
  Zelle zelle;
  
  public static void starten() {
      new ZellenGui(450, 400);
   }
  public ZellenGui (int w, int h) {
      this.setPreferredSize(new Dimension(w, h));
      JFrame frame = new JFrame("Zelle");
      game_running = true;
      stopped = true;
      
      /** GUI-INITIALISIEREN */
      JPanel hauptPanel = new JPanel();
      hauptPanel.setLayout(new BoxLayout(hauptPanel, BoxLayout.Y_AXIS));
      
      JButton start_stoppButton = new JButton("Start/Stopp");
      JButton erstellenButton = new JButton("Zelle erstellen");
      JButton speed = new JButton("Speed up/down");
      hauptPanel.add(start_stoppButton);
      hauptPanel.add(erstellenButton);
      hauptPanel.add(speed);
      
      start_stoppButton.addActionListener(new Start_stoppButtonListener());
      erstellenButton.addActionListener(new ErstellenListener());
      speed.addActionListener(new SpeedListener());
      
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(600, 400);
      frame.getContentPane().add(BorderLayout.WEST, this);
      frame.getContentPane().add(BorderLayout.EAST, hauptPanel);
      this.setBackground(Color.white);
      
      //System.out.println("Kostruktor abgeschlossen");
      
      initialisieren();
      frame.setVisible(true);
      
      //System.out.println("Initialisieren abgeschlossen");
    }

    private void initialisieren () {
        /**
        Hier wurde die Zelle vorher initialisiert!
        */
        //zelle = new Zelle(200, 200, this, "F:/Info/LoginGUI.2/pics/zelle4.png", "F:/Info/LoginGUI.2/pics/hintergrund1.png");
        list = new ArrayList<Zelle>();
        list.add(zelle);
        
        //repaint();
        
        Thread t = new Thread(this);
        t.start();
        //System.out.println("Nach initialisieren");
    }
    public void run () {
        try {
            Thread.sleep(1000); 
        } catch (Exception ex) {}   
        goSchleife();
        //System.out.println("Vor run");
        //System.out.println("Nach run");
    }
    public void goSchleife () {
        //System.out.println("Vor der Schleife");
        while (game_running == true) {
          while (stopped == false) {
            //Move-Methoden abrufen
                
            }
        }
    }   
}
    public void paintComponent (Graphics g) {
        super.paintComponent(g);
        
        //System.out.println("Vorm zeichnen");
        
         for (Drawable draw : list) {
               draw.drawObjects(g);
               //System.out.println("Object gezeichnet");
            }
        }
    public ZellenGui getGui () {
        return this;
    }
    
    class Start_stoppButtonListener implements ActionListener {
        public void actionPerformed (ActionEvent ev) {
            if (!stopped) {
                stopped = true;
            }
            else {
                stopped = false;
            }
        }
    }
    class SpeedListener implements ActionListener {
        public void actionPerformed (ActionEvent ev) {      
        }
    }
    class ErstellenListener implements ActionListener {
        public void actionPerformed (ActionEvent ev) {
            zelle = new Zelle(200, 200, getGui(), "F:/Info/LoginGUI.2/pics/zelle4.png", "F:/Info/LoginGUI.2/pics/hintergrund1.png");
            stopped = false;
        }
    }
}

Dazu die Klasse Zelle:

Java:
package seb.zelle;

import seb.*;

import java.awt.*;
import javax.swing.*;
import java.util.*;

public class Zelle implements Drawable, Moveable {
  
  ZellenGui gamePanel;
  Image image;
  Image image_h;
  String path;
  
  private int speed_1;
  private int speed_2;
  private int speed_3;
  
  private int x;
  private int y;
  private int rndZahl;
  
  private int a;
  private boolean kleinerN;
  
  private int zahl_1;
  private int zahl_2;
  private int zahl_3;
  private int zahl_4;
  
  private int standart;
  
  public Zelle (int x, int y, ZellenGui z, String path, String path_h) {
      this.x = x;
      this.y = y;
      
      gamePanel = z;
      image = new ImageIcon(path).getImage();
      image_h = new ImageIcon(path_h).getImage();
      
      standart = 10;
      
      speed_1 = (int) Math.sqrt(2.0)*standart;
      speed_2 = (int) Math.sqrt(5.0)*standart;
      speed_3 = (int) Math.sqrt(10.0)*standart;
    }
    public void drawObjects (Graphics g) {
        g.drawImage(image_h, 0, 0, null);
        g.drawImage(image, x, y, null);
    }
    /**Move-Methoden */
    
    @Override
    public void move() {
      //Move-Methoden die ich hier weglasse!
    } 
    @Override
    public void zeichne (int i) {
        gamePanel.repaint();
        try {
            Thread.sleep(i);
        } catch (Exception ex) {
        }
    }
}

Die methode move() ist aus dem interface Moveable überschrieben! Genauso die Methode zeichne()

Kann mir jemand mit meiner NPE helfen?

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at seb.zelle.ZellenGui.paintComponent(ZellenGui.java:93)
at javax.swing.JComponent.paint(JComponent.java:1017)
at javax.swing.JComponent.paintChildren(JComponent.java:852)
at javax.swing.JComponent.paint(JComponent.java:1026)
at javax.swing.JComponent.paintChildren(JComponent.java:852)
at javax.swing.JComponent.paint(JComponent.java:1026)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
at javax.swing.JComponent.paintChildren(JComponent.java:852)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5119)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent.paint(JComponent.java:1003)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1780)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Danke, Luk
 

Marco13

Top Contributor
Mach' mal in Zeile 92 ein
System.out.println("Vorm zeichnen: "+list);
und schau ob in der list 'null' vorkommt. (Ja, tut es :D ) Und schau dann, wo dieses 'null' in die list gelegt wird... Ich tippe auf Zeile 63 von ZellenGUI: Dort wird eine zelle reingelegt, die dort vermutlich noch null ist...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Swing JPanel mit ActionListener mehrfach verwenden AWT, Swing, JavaFX & SWT 8
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
frager2345 Bild aus Dateien lesen und als Hintergrund verwenden AWT, Swing, JavaFX & SWT 2
_user_q Objekte vom MainController in anderen Controller verwenden und andersherum (NullPointerException) AWT, Swing, JavaFX & SWT 14
C Swing ImageIcon erstellen, skalieren und verwenden AWT, Swing, JavaFX & SWT 3
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
O Soll ich einen JEditorPane verwenden ? AWT, Swing, JavaFX & SWT 5
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
M JavaFX MenuBar und Camera zusammen verwenden AWT, Swing, JavaFX & SWT 2
F Welchen Layoutmanager verwenden? AWT, Swing, JavaFX & SWT 2
X Swing OOP Vorlage verwenden und bearbeiten AWT, Swing, JavaFX & SWT 3
V JavaFX, Pane construktor von einer Klasse in der Main verwenden. AWT, Swing, JavaFX & SWT 4
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
M AWT Java-Taschenrechner, wie Stack richtig verwenden? AWT, Swing, JavaFX & SWT 14
S JVM von Oracle/Sun soll für AWT/SWING Elemente die die Optimierungen der NVidia Treiber verwenden AWT, Swing, JavaFX & SWT 3
T JTree, Knoten mehrmals verwenden AWT, Swing, JavaFX & SWT 5
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
T NullLayout verwenden, oder nicht? AWT, Swing, JavaFX & SWT 9
O Welche GUI verwenden? AWT, Swing, JavaFX & SWT 2
S JCalendar verwenden AWT, Swing, JavaFX & SWT 5
G GUI Elemente aus NetBeans verwenden AWT, Swing, JavaFX & SWT 8
H Swing JPanel Inhalt wird bei verwenden von JPopup gelöscht AWT, Swing, JavaFX & SWT 5
eskimo328 Java6 Methode in Java5 verwenden (memory leak JInternalFrame) AWT, Swing, JavaFX & SWT 4
I LookAndFeel Wie kann ich das Look and Feel "Blue Vista" verwenden? AWT, Swing, JavaFX & SWT 4
W Daten auf Textfeld in anderer Klasse verwenden AWT, Swing, JavaFX & SWT 4
R JOptionPane.YES_NO_CANCEL_OPTION im SaveDialog verwenden AWT, Swing, JavaFX & SWT 6
A Swingworker rückgabewert verwenden AWT, Swing, JavaFX & SWT 9
Y Swing JTabel verwenden ? AWT, Swing, JavaFX & SWT 11
Y JColorChooser verwenden AWT, Swing, JavaFX & SWT 8
D Objekt mit Button erstellen und mit anderem Button verwenden AWT, Swing, JavaFX & SWT 4
B Eingabe von JTextField verwenden AWT, Swing, JavaFX & SWT 10
A AWT Bilder als Link verwenden? AWT, Swing, JavaFX & SWT 11
S Koordinaten aus Array verwenden zum zeichnen auf JPanel?! AWT, Swing, JavaFX & SWT 3
F jFileChooser verwenden AWT, Swing, JavaFX & SWT 4
I Swing Wann invokeLater() verwenden? AWT, Swing, JavaFX & SWT 7
S AWT Eigenen Cursor im Frame verwenden... AWT, Swing, JavaFX & SWT 5
Yuen TableLayout verwenden / Classpath AWT, Swing, JavaFX & SWT 3
I Texteingabe des Benutzers in der GUI verwenden AWT, Swing, JavaFX & SWT 5
S Componente mehrmals verwenden ? AWT, Swing, JavaFX & SWT 3
H paint verwenden AWT, Swing, JavaFX & SWT 3
H JFileChooser richtig verwenden AWT, Swing, JavaFX & SWT 3
F Externes Look & Feel für Swing wie importieren/verwenden AWT, Swing, JavaFX & SWT 3
H JFileChooser im Applet verwenden AWT, Swing, JavaFX & SWT 2
B In einer JTextArea unterschiedliche Schriftarten verwenden? AWT, Swing, JavaFX & SWT 3
P Umlaute in GUI verwenden AWT, Swing, JavaFX & SWT 5
M Bilder als Link verwenden? AWT, Swing, JavaFX & SWT 3
P Fehler beim Verwenden von swt.jar mit NetBeans AWT, Swing, JavaFX & SWT 2
M Windows file icons in Java verwenden AWT, Swing, JavaFX & SWT 2
S das selbe JLabel öffters verwenden AWT, Swing, JavaFX & SWT 6
R JProgressBar ohne Threads verwenden AWT, Swing, JavaFX & SWT 6
m@nu convertPoint richtig verwenden? AWT, Swing, JavaFX & SWT 2
A Klassenübergreifend MouseListener verwenden AWT, Swing, JavaFX & SWT 14
T JDialog als Optionen Fenster verwenden AWT, Swing, JavaFX & SWT 6
lin Welches Objekt für einen About-Dialog verwenden? AWT, Swing, JavaFX & SWT 2
G Bei JScrollpane statt Scrollbar eine Vorschau verwenden AWT, Swing, JavaFX & SWT 3
K JComboBox und JTextField zusammen verwenden AWT, Swing, JavaFX & SWT 3
D invalidate() - wie verwenden? AWT, Swing, JavaFX & SWT 2
A gif-Datei als Button verwenden AWT, Swing, JavaFX & SWT 4
G Listener mehrfach verwenden AWT, Swing, JavaFX & SWT 2
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
L actionListener für Button AWT, Swing, JavaFX & SWT 97
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
R ActionListener in Actionlistener AWT, Swing, JavaFX & SWT 6
S Swing Variable in Actionlistener aufrufen AWT, Swing, JavaFX & SWT 10
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
Sin137 ActionListener in MVC AWT, Swing, JavaFX & SWT 7
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen


Oben