Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung

Mino1337

Mitglied
Hallo,

Ich habe einen JTree erstellt in einer eigenen Klasse, dieser soll in meinem Hauptframe "MasterFrame" in das Object "master" eingesetzt werden.

In der JTree-Klasse "Verzeichnissstruktur" wird mir beim übergeben jedoch eine NullPointerException beim ausführen angezeigt.

Der übergebene JTree ist jedoch vorher Ordentlich Initialisiert worden und kann keine null-referenz übergeben.

Hier der Fehlercode:

Exception in thread "main" java.lang.NullPointerException
at Benutzeroberfläche.Verzeichnisstruktur.<init>(Verzeichnisstruktur.java:43)
at Benutzeroberfläche.MasterFrame.<init>(MasterFrame.java:106)
at Benutzeroberfläche.MasterFrame.main(MasterFrame.java:54)

Hier die beiden betreffenden Klassen.

Java:
package Benutzeroberfläche;

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.ScrollPaneConstants;

import Funktionalität.Eintrag;
import Funktionalität.Verzeichnis;

public class MasterFrame implements ActionListener {

    public static MasterFrame master;
   
    private JPanel a;
    private JScrollPane b;
    private JScrollPane c;
    private JPanel d;
   
    private JPanel bb;

    private JPanel cc;
   
    private GridBagLayout layout;
    private GridBagLayout eintraglayout;
    private FlowLayout aLayout;
    private JFrame f;
   
    private Verzeichnisstruktur baum;
   
    private JMenuBar menuBar;
   
    private JButton sammlungenausblenden;
    private JButton sammlungeneinblenden;
    private JButton neuesammlung;
   
    public static void main(String[] args){
        master = new MasterFrame();
    }

    public MasterFrame(){
       
        a = new JPanel();
        aLayout = new FlowLayout(FlowLayout.LEFT,5,5);
        a.setLayout(aLayout);
        bb = new JPanel();
        b = new JScrollPane(bb,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        cc = new JPanel();
        eintraglayout = new GridBagLayout();
        cc.setLayout(eintraglayout);
        c = new JScrollPane(cc,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        d = new JPanel();
       
        a.setBackground(Color.red);
        bb.setBackground(Color.yellow);
        cc.setBackground(Color.blue);
        d.setBackground(Color.white);
           
        f = new JFrame("Sammelfuchs");
        f.setMinimumSize(new Dimension(800, 600));
        f.setLocationRelativeTo(null);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        layout = new GridBagLayout();
        f.setLayout(layout);
        setLayout(0);
       
        menuBar = new JMenuBar();
        makeMenu();
        f.setJMenuBar( menuBar );
       
        f.add(a);
        f.add(c);
        f.add(d);
       
        sammlungenausblenden = new JButton( "Sammlungen ausblenden" );
        sammlungenausblenden.setActionCommand("sammlungenausblenden");
        sammlungenausblenden.addActionListener(this);
       
        sammlungeneinblenden = new JButton( "Sammlungen einblenden" );
        sammlungeneinblenden.setActionCommand("sammlungeneinblenden");
        sammlungeneinblenden.addActionListener(this);
       
        neuesammlung = new JButton( "Neue Sammlung" );
        neuesammlung.setActionCommand("neuesammlung");
        neuesammlung.addActionListener(this);
       
        buttons(0);   
       
        baum = new Verzeichnisstruktur();
       
        f.validate();
    }
   
    public static void setConstraints(Component a,GridBagLayout c,int gridx, int gridy, int gridwith, int gridheight,int ipadx,int ipady, double weightx, double weighty, int fill, int anchor){
        GridBagConstraints cons = new GridBagConstraints();     //Bereinigung der Constrains (Alles auf Null setzen weil neu)
        cons.gridx = gridx;                 //In welcher Spalte startet das Objekt
        cons.gridy = gridy;                 //in welcher Zeile endet das Objekt
        cons.gridwidth = gridwith;            //Wieviele Spalten nimmt das Objekt ein
        cons.gridheight = gridheight;         //Wieviele Zeilen nimmt das Objekt ein
        cons.ipadx = ipadx;                 //Wie Breit ist das Objekt Mindestens
        cons.ipady = ipady;                 //Wie Hoch ist das Objekt Mindestens
        cons.weightx = weightx;             //Prozentualer Wert der Breite
        cons.weighty = weighty;             //Prozentualer Wert der Höhe
       
        cons.fill = fill;
        cons.anchor = anchor;
       
        c.setConstraints(a,cons);
    }
   
    public void setLayout(int x){
        if(x==0){
            setConstraints(a,layout,0,0,2,1,1,0,0.0,0.0,GridBagConstraints.BOTH,GridBagConstraints.CENTER);
            setConstraints(b,layout,0,1,1,1,200,0,0.0,1.0,GridBagConstraints.BOTH,GridBagConstraints.CENTER);
            setConstraints(c,layout,1,1,1,1,1,1,1.0,0.1,GridBagConstraints.BOTH,GridBagConstraints.CENTER);
            setConstraints(d,layout,0,3,2,1,1,20,1.0,0.0,GridBagConstraints.BOTH,GridBagConstraints.CENTER);
            f.add(b);
            f.validate();
            f.repaint();
        }else if(x==1){
            f.remove(b);
            f.validate();
            f.repaint();

        }
    }
   
    public void makeMenu() {
       
        JMenu neu = new JMenu( "Neu" );
        menuBar.add( neu );
        neu.add(new JMenuItem("Sammlung"));
        neu.add(new JMenuItem("Eintrag"));
       
        JMenu ansicht = new JMenu( "Ansicht" );
        menuBar.add( ansicht );
        ansicht.add(new JCheckBoxMenuItem("Sammlungen einblenden"));
       
        JMenu hilfe = new JMenu( "Hilfe" );
        menuBar.add( hilfe );
       
        JMenu ueber = new JMenu( "Über" );
        menuBar.add( ueber );
   
}
   
    public void buttons(int x){
        if(x==0){
            a.removeAll();
            a.add(sammlungenausblenden);
            a.add(neuesammlung);
            a.validate();
            f.repaint();
        }else if(x==1){
            a.removeAll();
            a.add(sammlungeneinblenden);
            a.add(neuesammlung);
            a.validate();
            f.repaint();
        }
    }
   
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("sammlungeneinblenden")){
            buttons(0);
            setLayout(0);
        }else if(e.getActionCommand().equals("sammlungenausblenden")){
            buttons(1);
            setLayout(1);
        }else if(e.getActionCommand().equals("neuesammlung")){
            new Dialoge(f,"neueSammlung");
        }

    }
   
    public void addTree(JTree tree) {
        bb.add(tree);
    }
   
    public JFrame getF() {
        return f;
    }
   
    public void setUserObjektLayout(Verzeichnis a){
        cc.removeAll();
       
        JLabel name = new JLabel(a.getName());
        setConstraints(name,eintraglayout,0,0,2,1,1,1,0.0,1.0,GridBagConstraints.BOTH,GridBagConstraints.CENTER);
        cc.add(name);
        f.validate();
        f.repaint();   
    }

    public void setUserObjektLayout(Eintrag a){
        cc.removeAll();
       
        JLabel name = new JLabel(a.getName());
        setConstraints(name,eintraglayout,0,0,2,1,1,1,0.0,0.0,GridBagConstraints.BOTH,GridBagConstraints.CENTER);
       
        cc.add(name);
        f.validate();
        f.repaint();   
    }

    public Verzeichnisstruktur getBaum() {
        return baum;
    }

}

Java:
package Benutzeroberfläche;

import java.awt.Dimension;

import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultTreeSelectionModel;
import javax.swing.tree.TreePath;

import Funktionalität.Eintrag;
import Funktionalität.Verzeichnis;

public class Verzeichnisstruktur implements TreeSelectionListener{

    private DefaultMutableTreeNode root;
    private DefaultTreeModel treemodel;
    private JTree tree;
    private DefaultTreeSelectionModel selectionTree;
    private static int sammlungZaehler = -1;
   
   
   
    public Verzeichnisstruktur(){
   
    root = new DefaultMutableTreeNode();
    treemodel = new DefaultTreeModel(root);
    tree = new JTree();
    tree.setModel(treemodel);
   
    tree.setMinimumSize( new Dimension() );
   
    selectionTree = new DefaultTreeSelectionModel();
    selectionTree.setSelectionMode(DefaultTreeSelectionModel.SINGLE_TREE_SELECTION);
    tree.setSelectionModel(selectionTree);
    tree.addTreeSelectionListener(this);
   
    TreePath path = new TreePath(root);
    tree.expandPath(path);
   
    MasterFrame.master.addTree(tree);
   
    MasterFrame.master.getF().validate();
    MasterFrame.master.getF().repaint();
    }
   
    public void verzeichnis(String a){
       
       
        DefaultMutableTreeNode verzeichnis = new DefaultMutableTreeNode();
        verzeichnis.setUserObject(new Verzeichnis(a));
        Verzeichnisstruktur.sammlungZaehler = Verzeichnisstruktur.sammlungZaehler +1;

       
        /*sammlungZaehler = sammlungZaehler + 1;
        DefaultMutableTreeNode x = new DefaultMutableTreeNode();
        x.setUserObject(new Eintrag(a));
        treemodel.insertNodeInto(x, root, sammlungZaehler); */
    }
   
    public void valueChanged(TreeSelectionEvent e){
       
        TreePath tp = tree.getSelectionPath();
        DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tp.getLastPathComponent();
        Object userObject = selectedNode.getUserObject();
       
        if(selectedNode.isLeaf() == true && selectedNode.getLevel() == 0){
           
            Verzeichnis b = (Verzeichnis)userObject;
            MasterFrame.master.setUserObjektLayout(b);
       
        }else if(selectedNode.isLeaf() == true){
       
            Eintrag a = (Eintrag)userObject;
        MasterFrame.master.setUserObjektLayout(a);
       
        }else if(selectedNode.isLeaf() == false){
           
            Verzeichnis b = (Verzeichnis)userObject;
            MasterFrame.master.setUserObjektLayout(b);
        }
       
    }

}

Für mich sieht es so aus als wenn er das master-Objekt nicht findet aber ich wüsste nicht wieso da es als allererstes initialisiert wird.

Vielen Dank =)
 

Mino1337

Mitglied
Hier die Methode bei der sie als erstes auftritt:

Java:
    public Verzeichnisstruktur(){
   
    root = new DefaultMutableTreeNode();
    treemodel = new DefaultTreeModel(root);
    tree = new JTree();
    tree.setModel(treemodel);
   
    tree.setMinimumSize( new Dimension() );
   
    selectionTree = new DefaultTreeSelectionModel();
    selectionTree.setSelectionMode(DefaultTreeSelectionModel.SINGLE_TREE_SELECTION);
    tree.setSelectionModel(selectionTree);
    tree.addTreeSelectionListener(this);
   
    TreePath path = new TreePath(root);
    tree.expandPath(path);
   
    MasterFrame.master.addTree(tree);      <------------
   
    MasterFrame.master.getF().validate();
    MasterFrame.master.getF().repaint();
    }
 

Joose

Top Contributor
Das Problem ist das du im Konstruktor der Klasse Verzeichnisstruktur auf das Attribut "master" zugreifen willst. Zu diesem Zeitpunkt ist dieses Attribut aber einfach noch nicht gesetzt. (Es ist null -> daher auch eine NullPointerException)
Ursache: Das Attribut "master" wird zwar in der main-Methode initialisiert, aber während der Initialisierung willst du schon wieder darauf zugreifen.

Lösung: Im Konstruktor nur Parameter prüfen und Attribute setzen! Layout und weitere Initialisierungen am besten in eine eigene Methode auslagern und extra aufrufen (nicht vom Konstruktor aus!)
 

Mino1337

Mitglied
Ahhhh ... wenn man drüber nachdenkt ist es Logisch =) ... Jetzt versteh ich auch wie man die main vernünftig benutzt ... Hab mich schon gewundert wozu so viel in der main von anderen Programmen steht =) ...

THX
 
Ä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
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
H 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