Null Exception aber keine Ahnung warum

urbani81_

Mitglied
Hallo,
ich muss für die Schule ein kleines Tic Tac Toe spiel in Java programmieren. Da ich noch nicht sehr gute Kenntnisse in Java habe, habe ich alles relativ kompliziert gemacht, jedoch funktioniert alles. Bei der Klasse Spielfeld sollen beim Starten 2 Fenster da sein(was es auch tut), das erste Fenster(Dialogfenster) ist die Auswahl ob man X oder O haben möchte. Das zweite Fenster das Spielfeld. Wenn man Jetzt X oder O ausgewählt hat, sollte das Fenster geschlossen werde und Nur das Spielfeld da bleiben. Sobald ich in aber den Button Methoden den Dialog erwähne und versuche ihn unsichtbar zu machen bekomme ich beim drücken des Buttons einen error(NullPointerException) in der Konsole.
Ich hoffe ich habe es einigermaßen verständlich formuliert.
Falls etwas unverständlich ist fragt gerne nach.
Ich habe fürs programmieren BlueJ verwendet.
 

Anhänge

  • Info2.zip
    Info2.zip
    361,6 KB · Aufrufe: 1
  • Konstruktor.png
    Konstruktor.png
    77,2 KB · Aufrufe: 43
  • MethodeButton.png
    MethodeButton.png
    75,5 KB · Aufrufe: 38
Poste den Code doch bitte direkt in Code-Tags ([code=java]//dein Code[/code]) 😉

Wie sieht der Stacktrace aus?
 
tut mir leid ich bin das erste mal hier im Forum
(
Java:
//  
public  SpielfeldSE(){
        
        
        
        x=1;
        this.setTitle("Spielfeld");
        this.setSize(514,410);
        //menu generate method
                //pane with null layout
        JPanel P = new JPanel(null);
        P.setPreferredSize(new Dimension(514,410));
        P.setBackground(new Color(192,192,192));
            
        JDialog F = new JDialog();
        F.setSize(250,140);
        F.setVisible(true);
        F.setLocationRelativeTo(null);
        F.add(P);
                  
                
        JPanel contentPane = new JPanel(null);
        contentPane.setPreferredSize(new Dimension(514,410));
        contentPane.setBackground(new Color(192,192,192));
        
        JLabel label1 = new JLabel();
        label1.setBounds(330,90,90,90);
        label1.setText("");
        label1.setVisible(true);
        label1.setEnabled(true);
        label1.setFont(new Font("sansserif",0,20));
        
        reset = new JButton();
        reset.setBounds(370,90,120,90);
        reset.setBackground(new Color(214,217,223));
        reset.setForeground(new Color(0,0,0));
        reset.setEnabled(true);
        reset.setFont(new Font("sansserif",0,12));
        reset.setText("Neues Spiel");
        reset.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        reset.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                resetclicked(evt);
            }
        });
        
        
         X = new JButton();
        X.setBounds(25,45,90,80);
        X.setBackground(new Color(214,217,223));
        X.setForeground(new Color(0,0,0));
        X.setEnabled(true);
        X.setFont(new Font("SansSerif",0,12));
        X.setText("X");
        X.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        X.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                Xclicked(evt);
            }
        });
        
        O = new JButton();
        O.setBounds(150,45,90,80);
        O.setBackground(new Color(214,217,223));
        O.setForeground(new Color(0,0,0));
        O.setEnabled(true);
        O.setFont(new Font("SansSerif",0,12));
        O.setText("O");
        O.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        O.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                Oclicked(evt);
            }
        });
        
       
        button11 = new JButton();
        button11.setBounds(25,90,90,90);
        button11.setBackground(new Color(214,217,223));
        button11.setForeground(new Color(0,0,0));
        button11.setEnabled(true);
        button11.setFont(new Font("sansserif",0,12));
        button11.setText("");
        button11.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        button11.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                b11clicked(evt);
            }
        });
        
        
        
        
        
       

        button12 = new JButton();
        button12.setBounds(125,90,90,90);
        button12.setBackground(new Color(214,217,223));
        button12.setForeground(new Color(0,0,0));
        button12.setEnabled(true);
        button12.setFont(new Font("sansserif",0,12));
        button12.setText("");
        button12.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        button12.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                b12clicked(evt);
            }
        });

        button13 = new JButton();
        button13.setBounds(225,90,90,90);
        button13.setBackground(new Color(214,217,223));
        button13.setForeground(new Color(0,0,0));
        button13.setEnabled(true);
        button13.setFont(new Font("sansserif",0,12));
        button13.setText("");
        button13.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        button13.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                b13clicked(evt);
            }
        });

        button21 = new JButton();
        button21.setBounds(25,190,90,90);
        button21.setBackground(new Color(214,217,223));
        button21.setForeground(new Color(0,0,0));
        button21.setEnabled(true);
        button21.setFont(new Font("sansserif",0,12));
        button21.setText("");
        button21.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        button21.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                b21clicked(evt);
            }
        });

        button22 = new JButton();
        button22.setBounds(125,190,90,90);
        button22.setBackground(new Color(214,217,223));
        button22.setForeground(new Color(0,0,0));
        button22.setEnabled(true);
        button22.setFont(new Font("sansserif",0,12));
        button22.setText("");
        button22.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        button22.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                b22clicked(evt);
            }
        });

        button23 = new JButton();
        button23.setBounds(225,190,90,90);
        button23.setBackground(new Color(214,217,223));
        button23.setForeground(new Color(0,0,0));
        button23.setEnabled(true);
        button23.setFont(new Font("sansserif",0,12));
        button23.setText("");
        button23.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        button23.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                b23clicked(evt);
            }
        });

        button31 = new JButton();
        button31.setBounds(25,290,90,90);
        button31.setBackground(new Color(214,217,223));
        button31.setForeground(new Color(0,0,0));
        button31.setEnabled(true);
        button31.setFont(new Font("SansSerif",0,12));
        button31.setText("");
        button31.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        button31.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                b31clicked(evt);
            }
        });

        button32 = new JButton();
        button32.setBounds(125,290,90,90);
        button32.setBackground(new Color(214,217,223));
        button32.setForeground(new Color(0,0,0));
        button32.setEnabled(true);
        button32.setFont(new Font("sansserif",0,12));
        button32.setText("");
        button32.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        button32.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                b32clicked(evt);
            }
        });

        button33 = new JButton();
        button33.setBounds(225,290,90,90);
        button33.setBackground(new Color(214,217,223));
        button33.setForeground(new Color(0,0,0));
        button33.setEnabled(true);
        button33.setFont(new Font("sansserif",0,12));
        button33.setText("");
        button33.setVisible(true);
        //Set methods for mouse events
        //Call defined methods
        button33.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                b33clicked(evt);
            }
        });
        
         panel1 = new JPanel(null);
        panel1.setBorder(BorderFactory.createEtchedBorder(1));
        panel1.setBounds(328,93,162,285);
        panel1.setBackground(new Color(214,217,223));
        panel1.setForeground(new Color(0,0,0));
        panel1.setEnabled(true);
        panel1.setFont(new Font("sansserif",0,12));
        panel1.setVisible(false);

        sf_heading = new JLabel();
        sf_heading.setBounds(178,11,210,80);
        sf_heading.setBackground(new Color(214,217,223));
        sf_heading.setForeground(new Color(0,0,0));
        sf_heading.setEnabled(true);
        sf_heading.setFont(new Font("SansSerif",0,25));
        sf_heading.setText("Tic Tac Toe");
        sf_heading.setVisible(true);
        //adding components to contentPane panel
        contentPane.add(button11);
        contentPane.add(button12);
        contentPane.add(button13);
        contentPane.add(button21);
        contentPane.add(button22);
        contentPane.add(button23);
        contentPane.add(button31);
        contentPane.add(button32);
        contentPane.add(button33);
        contentPane.add(panel1);
        contentPane.add(sf_heading);
        contentPane.add(label1);
        contentPane.add(reset);
        
        
        P.add(X);
        P.add(O);
        
        //adding panel to JFrame and seting of window position and close operation
        
        this.add(contentPane);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.pack();
        this.setVisible(true);
        
    }
)


(
Java:
//
private void Xclicked (MouseEvent evt) {
        ZeichenS = "X";
        ZeichenPC = "O";
        F.setTitle("false");
        }
       
    private void Oclicked (MouseEvent evt) {
        ZeichenS = "O";
        ZeichenPC = "X";
        F.setVisible(false);
    }
)
 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at SpielfeldSE.Xclicked(SpielfeldSE.java:360)
at SpielfeldSE.access$100(SpielfeldSE.java:18)
at SpielfeldSE$2.mouseClicked(SpielfeldSE.java:114)
 
Hallo.

Naja, im Stacktrace steht wo du zu suchen hast.

SpielfeldSE.Xclicked(SpielfeldSE.java:360)

In der Methode Xclicked von SpielfeldSE in der Zeile 360.

100% ist F.setTitle("false"); die Ursache, da du oben im Konstruktor das machst:

JDialog F = new JDialog();

Somit ist F außerhalb vom Konstruktor nicht bekannt bzw initialisiert.
 

Zurück
Oben