IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Soucis d'image de fond.


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Par défaut Soucis d'image de fond.
    Bonjour,

    Je débute en java et je ne comprend pas pourquoi il y a une erreur dans mon code.
    Merci de votre lumière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    package vue;
     
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
     
    public class Interface extends javax.swing.JFrame
    {
     
        private ImagePanel panelIm = null;
     
     
        public Interface()
        {
            super();
            this.setTitle("JHAK GAME");
            this.setSize(1024, 768);
            this.setMaximumSize(null);
            this.setLocationRelativeTo(null);
            this.setResizable(false);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            init();
     
            this.setVisible(true);
        }
     
        private void init()
        {
            //barre des menus
     
            //image de fond
            panelIm = new ImagePanel(".//Ressources//fond.png");
            panelIm.setLayout(null);
     
            //encadré du haut
     
     
            //encadré du bas
     
     
            //ajout
            this.add(panelIm);
            setContentPane(panelIm);
        }
     
     
     
        private void clean()
        {
            this.repaint();
        }
     
        public static void main(String[] args)
        {
            new Interface();
        }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    package vue;
     
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Image;
    import javax.swing.ImageIcon;
    import javax.swing.JPanel;
     
    class ImagePanel extends JPanel
    {
     
      private Image img;
     
      public ImagePanel(String img)
      {
        this.img = new ImageIcon(getClass().getResource(img)).getImage();
      }
     
      public ImagePanel(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);
      }
     
       //On doit redefinir la methode paintComponent() pour les composant swing !!! et paint() pour awt
        @Override
        protected void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            if (img == null) return;
            g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
        }
     
    }
    Et voici les erreurs :

    Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:167)
    at vue.ImagePanel.<init>(ImagePanel.java:16)
    at vue.Interface.init(Interface.java:32)
    at vue.Interface.<init>(Interface.java:22)
    at vue.Interface.main(Interface.java:55)

  2. #2
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Es-tu sûr que ton image existe bien à cet emplacement?
    Ton exception se produit sur cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.img = new ImageIcon(getClass().getResource(img)).getImage();
    , et NullPointerException signifie que tu essaie d'utiliser une variable qui ne contient rien...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Par défaut
    Bin j'ai essayé en mettant le chemin :

    "C://Users//Julio//Documents//NetBeansProjects//Vue//Ressources//fond.png"
    Mais toujours la même erreur, je comprend pas.

  4. #4
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    j'ai l'impression que c'est le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getClass().getResource(img)
    qui fait n'importe quoi...

    Essaie de faire simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ImageIcon(img).getImage();

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Par défaut
    Bonjour,

    Merci pour votre solution, c'était en effet ça.
    Pouvez m'expliquer pourquoi ?

  6. #6
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    À mon avis, ceci devrait t'expliquer le problème...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Souci avec une image au fond d'un champ texte
    Par zooffy dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 08/06/2012, 10h15
  2. boîte de dialogue avec image de fond + texte
    Par Eugénie dans le forum MFC
    Réponses: 13
    Dernier message: 31/08/2004, 13h32
  3. image de fond à la taille de la form
    Par littledoudou dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/01/2004, 14h15
  4. Comment mettre une image en fond de JFrame
    Par marc26 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2004, 17h57
  5. [VB6] [Graphisme] Image de fond stretchable dans mdiform
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 17/02/2003, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo