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



A voir également:

3 réponses

harderpod Messages postés 326 Date d'inscription   Statut Membre Dernière intervention   50
 
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
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
bonjour

je crois qu'il ne faut pas trop chercher

public class Fenetre extends JFrame{
      
    public Fenetre()
    {
        this.setSize(800,600);
        this.setTitle("Tetris");
        this.setVisible(true);
        this.setLocationRelativeTo(null);
       //this.setContentPane(null);
        
        
    }
    
}


Tout simplement, cette ligne n'est pas utile
0
bibuman Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci
0