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 :

Affichage d'image dans un Jpanel


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut Affichage d'image dans un Jpanel
    J'ai une Fenetre qui contient 4 JPanel, dans un de ceux-ci je souhaite afficher une image grace à une classe Imag, mais j'ai une erreur au niveau de "Imag img=new Imag(this.pannelImage);" dans ma classe Fenetre

    mon code:

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    package javaapplication6;
     
    import java.awt.Image;
     
     
    public class Fenetre extends javax.swing.JFrame {
     
     
        public Fenetre() {
            initComponents();
            Imag img=new Imag(this.pannelImage);
        }
     
        // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
        private void initComponents() {
            pannelImage = new java.awt.Panel();
            panelTrajet = new java.awt.Panel();
            panelHistorique = new java.awt.Panel();
            panelGestion = new java.awt.Panel();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            pannelImage.setBackground(new java.awt.Color(153, 153, 255));
            org.jdesktop.layout.GroupLayout pannelImageLayout = new org.jdesktop.layout.GroupLayout(pannelImage);
            pannelImage.setLayout(pannelImageLayout);
            pannelImageLayout.setHorizontalGroup(
                pannelImageLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 366, Short.MAX_VALUE)
            );
            pannelImageLayout.setVerticalGroup(
                pannelImageLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 262, Short.MAX_VALUE)
            );
     
            panelTrajet.setBackground(new java.awt.Color(255, 102, 102));
            org.jdesktop.layout.GroupLayout panelTrajetLayout = new org.jdesktop.layout.GroupLayout(panelTrajet);
            panelTrajet.setLayout(panelTrajetLayout);
            panelTrajetLayout.setHorizontalGroup(
                panelTrajetLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 416, Short.MAX_VALUE)
            );
            panelTrajetLayout.setVerticalGroup(
                panelTrajetLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 262, Short.MAX_VALUE)
            );
     
            panelHistorique.setBackground(new java.awt.Color(255, 255, 51));
            org.jdesktop.layout.GroupLayout panelHistoriqueLayout = new org.jdesktop.layout.GroupLayout(panelHistorique);
            panelHistorique.setLayout(panelHistoriqueLayout);
            panelHistoriqueLayout.setHorizontalGroup(
                panelHistoriqueLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 366, Short.MAX_VALUE)
            );
            panelHistoriqueLayout.setVerticalGroup(
                panelHistoriqueLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 296, Short.MAX_VALUE)
            );
     
            panelGestion.setBackground(new java.awt.Color(0, 255, 0));
            org.jdesktop.layout.GroupLayout panelGestionLayout = new org.jdesktop.layout.GroupLayout(panelGestion);
            panelGestion.setLayout(panelGestionLayout);
            panelGestionLayout.setHorizontalGroup(
                panelGestionLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 416, Short.MAX_VALUE)
            );
            panelGestionLayout.setVerticalGroup(
                panelGestionLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 296, Short.MAX_VALUE)
            );
     
            org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, panelHistorique, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, pannelImage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(panelGestion, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(panelTrajet, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, panelTrajet, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(pannelImage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(panelGestion, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(panelHistorique, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
            );
            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600);
        }// </editor-fold>                        
     
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Fenetre().setVisible(true);
     
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private java.awt.Panel panelGestion;
        private java.awt.Panel panelHistorique;
        private java.awt.Panel panelTrajet;
        private java.awt.Panel pannelImage;
        // End of variables declaration                   
     
    }
    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
     
    package javaapplication6;
     
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.io.File;
    import javax.swing.JPanel;
     
     
    public class Imag {
        File img;
        private JPanel parent;
     
        public Imag(JPanel parent) {
            this.parent=parent;
        }
     
        public void paintComponent(Graphics g) {
            Image image;
            String nomImg;
     
            img=new File("Q:\\photos\\Canard1.jpg");
            String name=img.getName();
     
            image=Toolkit.getDefaultToolkit().getImage(name) ;
            g.drawImage(image, 10,10,50,50,parent);
     
        }}

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Si on pouvait avoir la stack de ton erreur ce serait pas mal
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    voila l'erreur que me donne netbeans:

    D:\Projet\JAVA\JavaApplication6\src\javaapplication6\Fenetre.java:20: cannot find symbol
    symbol : constructor Imag(java.awt.Panel)
    location: class javaapplication6.Imag
    Imag img=new Imag(this.pannelImage);
    1 error
    BUILD FAILED (total time: 0 seconds)

  4. #4
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    change tes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private java.awt.Panel panelGestion;
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private JPanel panelGestion;
    Tu es en train de mélanger Swing et AWT...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Claythest
    change tes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private java.awt.Panel panelGestion;
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private JPanel panelGestion;
    Tu es en train de mélanger Swing et AWT...
    Je ne pense pas que le probème vienne de la car c'est du code qui est généré par netbeans

  6. #6
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Ben tu fais comme tu veux

    Mais saches que tu mélanges AWT et SWING...

    Visiblement, tu ne comprends pas tout, alors je t'explique :

    tu as un constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public Imag(JPanel parent) {
            this.parent=parent;
        }
    ... qui prend en paramètre un JPanel (SWING). Et tu lui passes un Panel(AWT) ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imag img=new Imag(this.pannelImage);
    Donc type incompatible, le compilateur ne connait pas de constructeur de Imag qui prenne en paramètre un Panel...

    Donc l'erreur vient soit de ton constructeur, soit de la définition de ta variable
    pannelImage.

    Comme AWT, c'était avant, je t'ai conseillé de garder ton JPanel (SWING c'est maintenant) et de changer tes Panel en JPanel...

    Mais bon, il est vrai que si c'est NetBeans qui a généré tout ce code, alors faut surtout rien toucher... (joke )

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Effectivement je savais pas qu'il y avait de Panel et des JPanel , il y a une différence entre les 2 ou c'est la même chose?

    Sinon, j'ai modifié mon code, j'ai tout mis en Panel, je n'ai plus d'erreur mais il y a encore un soucis, l'image ne s'affiche pas, j'ai l'impression que paintComponent ne se lance pas, je crois pouirtant que cette méthode est appelé automatiquement par Java,non?

    mon code modifié;

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    package javaapplication6;
     
    import java.awt.Image;
    import javax.swing.JPanel;
     
     
    public class Fenetre extends javax.swing.JFrame {
     
     
        public Fenetre() {
            initComponents();
            Imag img=new Imag(this.pannelImage);
        }
     
        // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
        private void initComponents() {
            pannelImage = new java.awt.Panel();
            panelTrajet = new java.awt.Panel();
            panelHistorique = new java.awt.Panel();
            panelGestion = new java.awt.Panel();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            pannelImage.setBackground(new java.awt.Color(153, 153, 255));
            org.jdesktop.layout.GroupLayout pannelImageLayout = new org.jdesktop.layout.GroupLayout(pannelImage);
            pannelImage.setLayout(pannelImageLayout);
            pannelImageLayout.setHorizontalGroup(
                pannelImageLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 366, Short.MAX_VALUE)
            );
            pannelImageLayout.setVerticalGroup(
                pannelImageLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 262, Short.MAX_VALUE)
            );
     
            panelTrajet.setBackground(new java.awt.Color(255, 102, 102));
            org.jdesktop.layout.GroupLayout panelTrajetLayout = new org.jdesktop.layout.GroupLayout(panelTrajet);
            panelTrajet.setLayout(panelTrajetLayout);
            panelTrajetLayout.setHorizontalGroup(
                panelTrajetLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 416, Short.MAX_VALUE)
            );
            panelTrajetLayout.setVerticalGroup(
                panelTrajetLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 262, Short.MAX_VALUE)
            );
     
            panelHistorique.setBackground(new java.awt.Color(255, 255, 51));
            org.jdesktop.layout.GroupLayout panelHistoriqueLayout = new org.jdesktop.layout.GroupLayout(panelHistorique);
            panelHistorique.setLayout(panelHistoriqueLayout);
            panelHistoriqueLayout.setHorizontalGroup(
                panelHistoriqueLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 366, Short.MAX_VALUE)
            );
            panelHistoriqueLayout.setVerticalGroup(
                panelHistoriqueLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 296, Short.MAX_VALUE)
            );
     
            panelGestion.setBackground(new java.awt.Color(0, 255, 0));
            org.jdesktop.layout.GroupLayout panelGestionLayout = new org.jdesktop.layout.GroupLayout(panelGestion);
            panelGestion.setLayout(panelGestionLayout);
            panelGestionLayout.setHorizontalGroup(
                panelGestionLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 416, Short.MAX_VALUE)
            );
            panelGestionLayout.setVerticalGroup(
                panelGestionLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 296, Short.MAX_VALUE)
            );
     
            org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, panelHistorique, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, pannelImage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(panelGestion, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(panelTrajet, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, panelTrajet, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(pannelImage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(panelGestion, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(panelHistorique, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
            );
            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600);
        }// </editor-fold>                        
     
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Fenetre().setVisible(true);
     
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private java.awt.Panel panelGestion;
        private java.awt.Panel panelHistorique;
        private java.awt.Panel panelTrajet;
        private java.awt.Panel pannelImage;
        // End of variables declaration                   
     
    }
    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
     
    package javaapplication6;
     
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Panel;
    import java.awt.Toolkit;
    import java.io.File;
    import javax.swing.JPanel;
     
     
    public class Imag {
        File img;
        private Panel parent;
     
        public Imag(Panel parent) {
            this.parent=parent;
     
        }
     
        public void paintComponent(Graphics g) {
            Image image;
            String nomImg;
     
            img=new File("Q:\\photos\\Canard1.jpg");
            String name=img.getName();
     
            image=Toolkit.getDefaultToolkit().getImage(name) ;
            g.drawImage(image, 10,10,50,50,parent);
     
     
        }}

  8. #8
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Au commencement de Java, il y eu AWT pour faire des interfaces graphique... Ensuite est apparu SWING, une sorte de AWT évolué (qui utilise AWT en interne).

    Panel, c'est les panneaux en AWT... JPanel, c'est les panneaux en SWING.

    Si tu as le choix entre AWT et SWING (autrement dit, si tu n'es pas forcé de faire du vieux Java), je te conseille vivement d'utiliser SWING. En tout cas, on ne doit pas manipuler des composants AWT et des composants SWING !

    Frame c'est du AWT, JFrame, c'est du SWING. Donc soit tu utilises Panel, et alors tu utilises aussi Frame, soit tu utilises JPanel et alors tu utilises aussi JFrame.

    Là, tu fais un mixe des 2, il est possible que ce soit la cause de bugs...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Ok, merci beaucoup pour ces petites précisions, j'ai donc suivi tes conseils j'ai tout mis en JPanel, mais malheureusement mon image ne s'affiche toujours pas

  10. #10
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Il faudrait peut être ajouter l'image dans ta fenetre pour qu'elle y apparaisse non ?

    Or dans une fenetre, on ne peut y placer que des composants... Donc ta classe Imag doit étendre la classe JComponent, et en effet, la méthode paintComponent sera vue comme une redéfinition de la méthode paintComponent de JComponent...

    Tu ajoutes ensuite ton Imag dans ta JFrame (maJFrame.getContentPane().add(monImag) ), et pouf, magie

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    J'ai essayé de suivre ce que tu m'a dit, mais ca ne marche toujours pas, je me suis peut-être planté quelque part ou alors j'ai oublié quelque chose.

    mon code modifié:

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
    package javaapplication6;
     
    import java.awt.Image;
    import javax.swing.JPanel;
     
     
    public class Fenetre extends javax.swing.JFrame {
     
     
        public Fenetre() {
            initComponents();
                 Imag img=new Imag(this.jPanelImage);
            this.getContentPane().add(img);
     
     
        }
     
        // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
        private void initComponents() {
            jPanelImage = new javax.swing.JPanel();
            jPanel2 = new javax.swing.JPanel();
            jPanel3 = new javax.swing.JPanel();
            jPanel4 = new javax.swing.JPanel();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jPanelImage.setBackground(new java.awt.Color(102, 102, 255));
            jPanelImage.setPreferredSize(new java.awt.Dimension(395, 295));
            org.jdesktop.layout.GroupLayout jPanelImageLayout = new org.jdesktop.layout.GroupLayout(jPanelImage);
            jPanelImage.setLayout(jPanelImageLayout);
            jPanelImageLayout.setHorizontalGroup(
                jPanelImageLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 395, Short.MAX_VALUE)
            );
            jPanelImageLayout.setVerticalGroup(
                jPanelImageLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 295, Short.MAX_VALUE)
            );
     
            jPanel2.setBackground(new java.awt.Color(102, 255, 102));
            jPanel2.setMinimumSize(new java.awt.Dimension(395, 295));
            org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
            jPanel2.setLayout(jPanel2Layout);
            jPanel2Layout.setHorizontalGroup(
                jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 405, Short.MAX_VALUE)
            );
            jPanel2Layout.setVerticalGroup(
                jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 295, Short.MAX_VALUE)
            );
     
            jPanel3.setBackground(new java.awt.Color(255, 204, 153));
            jPanel3.setPreferredSize(new java.awt.Dimension(395, 295));
            org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3);
            jPanel3.setLayout(jPanel3Layout);
            jPanel3Layout.setHorizontalGroup(
                jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 395, Short.MAX_VALUE)
            );
            jPanel3Layout.setVerticalGroup(
                jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 267, Short.MAX_VALUE)
            );
     
            jPanel4.setBackground(new java.awt.Color(255, 102, 102));
            jPanel4.setPreferredSize(new java.awt.Dimension(395, 295));
            org.jdesktop.layout.GroupLayout jPanel4Layout = new org.jdesktop.layout.GroupLayout(jPanel4);
            jPanel4.setLayout(jPanel4Layout);
            jPanel4Layout.setHorizontalGroup(
                jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 395, Short.MAX_VALUE)
            );
            jPanel4Layout.setVerticalGroup(
                jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 267, Short.MAX_VALUE)
            );
     
            org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, jPanelImage, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(layout.createSequentialGroup()
                            .add(jPanel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .addContainerGap())
                        .add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, jPanelImage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(jPanel4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 267, Short.MAX_VALUE)
                        .add(jPanel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 267, Short.MAX_VALUE)))
            );
            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600);
        }// </editor-fold>                        
     
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Fenetre().setVisible(true);
     
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JPanel jPanel2;
        private javax.swing.JPanel jPanel3;
        private javax.swing.JPanel jPanel4;
        private javax.swing.JPanel jPanelImage;
        // End of variables declaration                   
     
    }
    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
     
    package javaapplication6;
     
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Panel;
    import java.awt.Toolkit;
    import java.io.File;
    import javax.swing.JComponent;
    import javax.swing.JPanel;
     
     
    public class Imag  extends JComponent{
        File img;
        private JPanel parent;
     
        public Imag(JPanel parent) {
            this.parent=parent;
            repaint();
     
     
        }
     
        public void paintComponent(Graphics g) {
            Image image;
            String nomImg;
     
            img=new File("Q:\\photos\\Canard1.jpg");
            String name=img.getName();
     
            image=Toolkit.getDefaultToolkit().getImage(name) ;
            g.drawImage(image, 10,10,50,50,parent);
     
     
     
        }}

  12. #12
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Dans la classe Imag, l'attribut parent est inutile. Tu peux le supprimer, et appeler drawImage en mettant le paramètre ImageObserver à null.
    De plus, je te conseille de créer l'image dans le constructeur, parce que dans la version actuelle, tu lis le fichier à chaque rafraichissement de l'affichage.

    Enfin, j'ai l'impression que tu ne maîtrises pas encore les layouts, donc je te conseille de coder à la main avant d'utiliser des outils de conception de GUI. Je n'ai aucune idée de là ou le GroupLayout a bien pu te placer le composant, avec 6 lignes de contraintes ... Alors qu'un GridLayout(2, 2) aurait parfaitement fait l'affaire.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Si j'ai bien compris tes conseils, ca donne ca:

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
    package javaapplication6;
     
    import java.awt.Image;
    import javax.swing.JPanel;
     
     
    public class Fenetre extends javax.swing.JFrame {
     
     
        public Fenetre() {
            initComponents();
                 Imag img=new Imag();
     
        }
     
        // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
        private void initComponents() {
            jPanelImage = new javax.swing.JPanel();
            jPanel2 = new javax.swing.JPanel();
            jPanel3 = new javax.swing.JPanel();
            jPanel4 = new javax.swing.JPanel();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jPanelImage.setBackground(new java.awt.Color(102, 102, 255));
            jPanelImage.setPreferredSize(new java.awt.Dimension(395, 295));
            org.jdesktop.layout.GroupLayout jPanelImageLayout = new org.jdesktop.layout.GroupLayout(jPanelImage);
            jPanelImage.setLayout(jPanelImageLayout);
            jPanelImageLayout.setHorizontalGroup(
                jPanelImageLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 395, Short.MAX_VALUE)
            );
            jPanelImageLayout.setVerticalGroup(
                jPanelImageLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 295, Short.MAX_VALUE)
            );
     
            jPanel2.setBackground(new java.awt.Color(102, 255, 102));
            jPanel2.setMinimumSize(new java.awt.Dimension(395, 295));
            org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
            jPanel2.setLayout(jPanel2Layout);
            jPanel2Layout.setHorizontalGroup(
                jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 405, Short.MAX_VALUE)
            );
            jPanel2Layout.setVerticalGroup(
                jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 295, Short.MAX_VALUE)
            );
     
            jPanel3.setBackground(new java.awt.Color(255, 204, 153));
            jPanel3.setPreferredSize(new java.awt.Dimension(395, 295));
            org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3);
            jPanel3.setLayout(jPanel3Layout);
            jPanel3Layout.setHorizontalGroup(
                jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 395, Short.MAX_VALUE)
            );
            jPanel3Layout.setVerticalGroup(
                jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 267, Short.MAX_VALUE)
            );
     
            jPanel4.setBackground(new java.awt.Color(255, 102, 102));
            jPanel4.setPreferredSize(new java.awt.Dimension(395, 295));
            org.jdesktop.layout.GroupLayout jPanel4Layout = new org.jdesktop.layout.GroupLayout(jPanel4);
            jPanel4.setLayout(jPanel4Layout);
            jPanel4Layout.setHorizontalGroup(
                jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 395, Short.MAX_VALUE)
            );
            jPanel4Layout.setVerticalGroup(
                jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 267, Short.MAX_VALUE)
            );
     
            org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, jPanelImage, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(layout.createSequentialGroup()
                            .add(jPanel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .addContainerGap())
                        .add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(org.jdesktop.layout.GroupLayout.LEADING, jPanelImage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(jPanel4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 267, Short.MAX_VALUE)
                        .add(jPanel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 267, Short.MAX_VALUE)))
            );
            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600);
        }// </editor-fold>                        
     
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Fenetre().setVisible(true);
     
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JPanel jPanel2;
        private javax.swing.JPanel jPanel3;
        private javax.swing.JPanel jPanel4;
        private javax.swing.JPanel jPanelImage;
        // End of variables declaration                   
     
    }
    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
     
    package javaapplication6;
     
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Panel;
    import java.awt.Toolkit;
    import java.io.File;
    import javax.swing.JComponent;
    import javax.swing.JPanel;
     
     
    public class Imag  extends JComponent{
        File img;
        private String name;
        Image image;
     
        public Imag() {
            img=new File("Q:\\photos\\Canard1.jpg");
            name=img.getName();
            image=Toolkit.getDefaultToolkit().getImage(name) ;
     
     
     
        }
     
        public void paintComponent(Graphics g) {
     
            g.drawImage(image, 10,10,50,50,null);
     
     
        }}
    Mais comment faire pour que l'image s'affiche dans le JPanelImage

  14. #14
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Pour la classe Image, c'est beaucoup mieux. Il ne reste plus qu'à adapter la taille de l'image à celle du composant (si c'est ce que tu veux), en remplaçant 10, 10, 50, 50 par des valeurs calculées en fonction de getWidth() et getHeight().

    Pour la fenêtre, il ne reste plus qu'à ajouter l'image à un des JPanels ou au contentPane (comme tu faisais avant), mais je ne connais pas très bien le GroupLayout, et avec du code généré, c'est pas la peine.

    Essaie toujours de mettre dans le constructeur :mais je ne sais pas si il ne faut pas mettre des paramètres pour le GroupLayout. Et je ne sais pas ou tu veux mettre l'image.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. Probleme Qualité d'affichage d'image dans JPanel
    Par snay13 dans le forum Débuter
    Réponses: 14
    Dernier message: 07/09/2010, 20h20
  2. Réponses: 2
    Dernier message: 23/05/2010, 12h45
  3. Affichage image dans un JPanel
    Par Revan dans le forum 2D
    Réponses: 2
    Dernier message: 02/01/2008, 21h52
  4. Probleme d'affichage d'image dans une fenetre
    Par cgregueusse dans le forum MFC
    Réponses: 1
    Dernier message: 03/08/2005, 11h08
  5. Affichage d'images dans une fenêtre
    Par tonycalv dans le forum MFC
    Réponses: 6
    Dernier message: 20/04/2005, 20h02

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