Jpanel contentPane cannot be set to null

Résolu/Fermé
bibuman Messages postés 5 Date d'inscription mardi 28 septembre 2010 Statut Membre Dernière intervention 9 avril 2012 - 9 avril 2012 à 01:09
bibuman Messages postés 5 Date d'inscription mardi 28 septembre 2010 Statut Membre Dernière intervention 9 avril 2012 - 9 avril 2012 à 12:26
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

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 :)



3 réponses

harderpod Messages postés 320 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 22 avril 2014 50
9 avril 2012 à 02:17
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
0