Question

Bonjour à tous, j’essaie d’exécuter le programme suivant, mais je reçois une exception NullPointerException. Je suis nouveau dans la bibliothèque de balançoires Java pour pouvoir faire quelque chose de très bête. Quoi qu’il en soit, voici mes deux cours auxquels je joue pour le moment et tout ce que je veux, c’est dessiner un putain de cercle (je ne veux pas dessiner de potence, avec un bourreau à la fin).

package hangman2;

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

public class Hangman2 extends JFrame{
    private GridLayout alphabetLayout = new GridLayout(2,2,5,5);
    private Gallow gallow = new Gallow();

    public Hangman2() {

        setLayout(alphabetLayout);

        setSize(1000,500);
        setVisible( true );

    }

    public static void main( String args[] ) {   
     Hangman2 application = new Hangman2();
     application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }
}


package hangman2;

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

public class Gallow extends JPanel {
    private Graphics g;

    public Gallow(){
        g.fillOval(10, 20, 40, 25);       
    }
}

L'exception NullPointerException arrive à la ligne g.fillOval.

Merci d'avance,

Tomek

Était-ce utile?

La solution

Vous obtenez NPE car g n'est pas défini, par conséquent, il s'agit de null . De plus, vous ne devriez pas faire le dessin dans le constructeur. Surcharge paintComponent (Graphics g) à la place.

public class Gallow extends JPanel {
    public paintComponent(Graphics g){
        g.fillOval(10, 20, 40, 25);       
    }
}

J'aimerais également examiner BufferedImage .

Autres conseils

Quelques choses: N'oubliez pas d'ajouter le panneau au JFrame . Et remplacez la méthode paint () de JPanel pour votre dessin personnalisé. Vous n'avez pas besoin de déclarer un objet Graphics car la méthode de peinture de JPanel utilisera une référence à un dans tous les cas.

package hangman2;

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

public class Hangman2 extends JFrame{
    private GridLayout alphabetLayout = new GridLayout(2,2,5,5);
    private Gallow gallow = new Gallow();

    public Hangman2() {

        setLayout(alphabetLayout);
        add(gallow, BorderLayout.CENTER);//here
        setSize(1000,500);
        setVisible( true );

    }

    public static void main( String args[] ) {   
        Hangman2 application = new Hangman2();
        application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }
}


package hangman2;

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

public class Gallow extends JPanel {

    public Gallow(){
        super();
    }

    public void paint(Graphics g){
        g.fillOval(10, 20, 40, 25);       
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top