Jpanel contentPane cannot be set to null
Résolu
bibuman
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
bibuman Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
bibuman Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite crée une jpanel avec une image à l'intérieur. Le problème est que je n'arrive pas à la faire afficher.
J'ai crée une classe fenetre
J'ai aussi crée une classe Ligne ( image que je souhaite afficher)
Et mon main
Mon code ce compile mais j'ai "Exception in thread "main" java.awt.IllegalComponentStateException: contentPane cannot be set to null."
D'ou viens mon erreur.
Merci par avance :)
Je souhaite crée une jpanel avec une image à l'intérieur. Le problème est que je n'arrive pas à la faire afficher.
J'ai crée une classe fenetre
public class Fenetre extends JFrame{ public Fenetre() { this.setSize(800,600); this.setTitle("Tetris"); this.setVisible(true); this.setLocationRelativeTo(null); this.setContentPane(null); } }
J'ai aussi crée une classe Ligne ( image que je souhaite afficher)
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package projecttetris; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JPanel; public class Ligne extends JPanel { private Image img; public Ligne(String img) { this(new ImageIcon(img).getImage()); } public Ligne(Image img) { this.img = img ; Dimension size = new Dimension(img.getWidth(null),img.getHeight(null)); setPreferredSize(size); setMinimumSize(size); setMaximumSize(size); setSize(size); setLayout(null); } public void paintComponent(Graphics g){ g.drawImage(img, 0, 0, null); } }
Et mon main
public static void main(String[] args) { Fenetre mainFenetre = new Fenetre(); Ligne nouvelleligne = new Ligne(new ImageIcon("Ligne.PNG").getImage()); JFrame frame = new JFrame(); frame.setBounds(158, 99, 264, 148); // choisir soi meme ou placer la frame frame.getContentPane().add(nouvelleligne); // ajouter nvligne dans la frame ( si je me trompe pas) frame.pack(); // je ne connais pas frame.setVisible(true); // rendre visible // TODO code application logic here } }
Mon code ce compile mais j'ai "Exception in thread "main" java.awt.IllegalComponentStateException: contentPane cannot be set to null."
D'ou viens mon erreur.
Merci par avance :)
A voir également:
- Exception in thread "main" java.awt.illegalcomponentstateexception: contentpane cannot be set to null.
- Qwerty to azerty - Guide
- Navigation in private - Guide
- Deco in paris avis ✓ - Forum Consommation & Internet
- Decoinparis ⚠️ arnaque ✓ - Forum Consommation & Internet
- Déco in paris site fiable ???? - Forum Consommation & Internet
3 réponses
salut, sa fait un moment que j'ai pas fait de java mais si tu regarde la le message d'erreur comme il faut sa donne une bonne piste
contentPane cannot be set to null, en gros le composant contentPane ne peut etre initialiser null.
il te faut lui donner des parametres il me semble.
un bout de code qui utilise ContentPan
public class Fenetre extends JFrame {
public Fenetre(){
this.setTitle("Ma première fenêtre java");
this.setSize(100, 150);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setContentPane(new Panneau());
this.setVisible(true););
dans ta classe Fenetres, ContentPane est initialiser avec le parametre null, ici on lui donne un objet comme argument, tu peut en faire de même.
je pense que si tu écrit quelque chose comme sa en remplacent JPanel par ta classe linge par exemple, sa pourait marchait.
//Instanciation d'un objet JPanel
JPanel pan = new JPanel();
//On prévient notre JFrame que ce sera notre JPanel qui sera son contentPane
this.setContentPane(pan);
en esperant t'avoir mis sur la voit
contentPane cannot be set to null, en gros le composant contentPane ne peut etre initialiser null.
il te faut lui donner des parametres il me semble.
un bout de code qui utilise ContentPan
public class Fenetre extends JFrame {
public Fenetre(){
this.setTitle("Ma première fenêtre java");
this.setSize(100, 150);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setContentPane(new Panneau());
this.setVisible(true););
dans ta classe Fenetres, ContentPane est initialiser avec le parametre null, ici on lui donne un objet comme argument, tu peut en faire de même.
je pense que si tu écrit quelque chose comme sa en remplacent JPanel par ta classe linge par exemple, sa pourait marchait.
//Instanciation d'un objet JPanel
JPanel pan = new JPanel();
//On prévient notre JFrame que ce sera notre JPanel qui sera son contentPane
this.setContentPane(pan);
en esperant t'avoir mis sur la voit