Hallo,
ich habe ein NullPointerException-Problem und finde die lösung einfach nicht. Ich werkel jetzt seit ungefähr ner Woche mit Java herum, habe also noch nicht wirklich viel Routine, deswegen glaube ich, das es nur ein kleiner Flüchtigkeitsfehler ist, den ich auch nach stundenlanger Suche nicht finde. Da ich aber auch nicht genau weiß, ob es nicht vielleicht doch ein etwas größerer, grundlegenderer Fehler ist, der mit den Listenern zusammenhängt.
Ich habe eine Menüleist erstellt, die noch nicht sher gefüllt ist. Nur die beiden Einträge in "neu" haben schon wirklichen Code, der andere Klassen und Methoden aufruft (und auch der ist erstmal testweise).
Hier erstmal der Code:
Das dazugehörige Frame wird in einer anderen Klasse erstellt (Auch da tut sich ein Problem auf, nämlich dass das Menü erst angezeigt wird, wenn man das Fenster einmal maximiert hat, woran kann das liegen?) und funktioniert auch soweit.
der NeuGebäudeListener wift mir folgenden Fehler aus:
Und zwar egal, ob ich vorher eine Stadt erstellt habe oder nicht.
Kann mir vielleicht jemand bei der Fehlersuche helfen?
[EDIT]Achja, wenn man für die Lösung des Problems noch andere Klassen braucht, bitte bescheid sagen... ich wollte den Beitrag hier nur nicht völlig unnötig in die Länge ziehen.
Und nochwas: Wenn ich die
direkt nach
in der "actionPerformed(ActionEvent e)"-Methode der NeuStadtListener einfüge, funktioniert es... [/EDIT]
ich habe ein NullPointerException-Problem und finde die lösung einfach nicht. Ich werkel jetzt seit ungefähr ner Woche mit Java herum, habe also noch nicht wirklich viel Routine, deswegen glaube ich, das es nur ein kleiner Flüchtigkeitsfehler ist, den ich auch nach stundenlanger Suche nicht finde. Da ich aber auch nicht genau weiß, ob es nicht vielleicht doch ein etwas größerer, grundlegenderer Fehler ist, der mit den Listenern zusammenhängt.
Ich habe eine Menüleist erstellt, die noch nicht sher gefüllt ist. Nur die beiden Einträge in "neu" haben schon wirklichen Code, der andere Klassen und Methoden aufruft (und auch der ist erstmal testweise).
Hier erstmal der Code:
Java:
package GUI;
import java.awt.event.*;
import javax.swing.*;
import Städte.*;
public class Menüleiste {
// Menüleiste
JMenuBar menueLeiste;
// Menüleiste Elemente
JMenu datei;
JMenu neu;
// Datei
JMenuItem speichern;
JMenuItem laden;
JMenuItem beenden;
// Neu
JMenuItem stadt;
JMenuItem gebäude;
public JMenuBar ausführenMenüleiste() {
// Menüleiste erzeugen
menueLeiste = new JMenuBar();
// Menüelemente erzeugen
datei = new JMenu("Datei");
neu = new JMenu("Neu");
// Untermenüelemente erzeugen
speichern = new JMenuItem("speichern");
speichern.addActionListener(new DateiSpeichernListener());
laden = new JMenuItem("laden");
laden.addActionListener(new DateiLadenListener());
beenden = new JMenuItem("beenden");
beenden.addActionListener(new DateiBeendenListener());
stadt = new JMenuItem("Stadt");
stadt.addActionListener(new NeuStadtListener());
gebäude = new JMenuItem("Gebäude");
gebäude.addActionListener(new NeuGebäudeListener());
// Menüelemente hinzufügen
menueLeiste.add(datei);
menueLeiste.add(neu);
// Untermenüelemente hinzufügen
datei.add(speichern);
datei.add(laden);
datei.add(beenden);
neu.add(stadt);
neu.add(gebäude);
return menueLeiste;
}
StartStädte DZ_Gruppe;
class DateiSpeichernListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("speichern wurde angeklickt");
}
}
class DateiLadenListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("laden wurde angeklickt");
}
}
class DateiBeendenListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("beenden wurde angeklickt");
}
}
class NeuStadtListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
setNeuStadt();
System.out.println("Neue Stadt wurde erstellt");
}
public void setNeuStadt() {
StartStädte DZ_Gruppe = new StartStädte();
DZ_Gruppe.neueStadt();
}
public StartStädte getNeuStadt() {
return DZ_Gruppe;
}
}
class NeuGebäudeListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
ausführenNeuGebäude(DZ_Gruppe);
}
public void ausführenNeuGebäude (StartStädte DZ_Gruppe) {
DZ_Gruppe.neueGebäude(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4);
DZ_Gruppe.neueGebäude(1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 15, 1, 1, 0, 1, 1, 1, 1, 2);
DZ_Gruppe.Städte();
}
}
}
Das dazugehörige Frame wird in einer anderen Klasse erstellt (Auch da tut sich ein Problem auf, nämlich dass das Menü erst angezeigt wird, wenn man das Fenster einmal maximiert hat, woran kann das liegen?) und funktioniert auch soweit.
der NeuGebäudeListener wift mir folgenden Fehler aus:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GUI.Menüleiste$NeuGebäudeListener.ausführenNeuGebäude(Menüleiste.java:116)
at GUI.Menüleiste$NeuGebäudeListener.actionPerformed(Menüleiste.java:110)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Und zwar egal, ob ich vorher eine Stadt erstellt habe oder nicht.
Kann mir vielleicht jemand bei der Fehlersuche helfen?
[EDIT]Achja, wenn man für die Lösung des Problems noch andere Klassen braucht, bitte bescheid sagen... ich wollte den Beitrag hier nur nicht völlig unnötig in die Länge ziehen.
Und nochwas: Wenn ich die
Java:
DZ_Gruppe.neueGebäude(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4);
DZ_Gruppe.neueGebäude(1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 15, 1, 1, 0, 1, 1, 1, 1, 2);
DZ_Gruppe.Städte();
Java:
StartStädte DZ_Gruppe = new StartStädte();
DZ_Gruppe.neueStadt();
Zuletzt bearbeitet: