[JAVA] Affichage d'une image dans un Panel

Fermé
Julie35 Messages postés 2 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 27 mars 2007 - 21 mars 2007 à 18:18
 Utilisateur anonyme - 7 avril 2007 à 07:26
Bonjour,
J'ai une Fenetre qui contient 4 Panel, dans un de ceux-ci je souhaite afficher une image grace à une classe Imag, mais l'image ne s'affiche pas, j'ai l'impression que la méthode paintComponent de la classe Imag n'est pas exécutée, pourtant je croyais que cette méthode était appelée automatiquement par Java.

mon code:


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                   
   
}








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);
        
        
    }}
A voir également:

1 réponse

Utilisateur anonyme
7 avril 2007 à 07:26
Salut!

Tu as bien défini une méthode paintComponent(), mais il faut que celle-ci soit définie dans une sous-classe de JComponent. Or, ta classe Imag n'est pas une sous-classe de JComponent.

Ce que tu devrais faire, c'est déplacer ta méthode paintComponent() dans le JPanel qui contient ton Imag ou alors faire comme ceci:

public class Imag {
    File img;
    private JPanel 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) ;
parent.getGraphics().drawImage(image, 10,10,50,50,parent);
parent.repaint();
        
        
    }}



Je n'ai pas testé le code, mais ce doit être quelquechose d'approchant

;-)
HackTrack
8