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 :

Inserer Image Plusieurs JPanel


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut Inserer Image Plusieurs JPanel
    Bonjour,

    Aujourd'hui grand jour : j'ai réussi a afficher l'image de mon choix dans ma classe MonPanel qui étends JPanel. Pour cela j'ai crée une image "fond" comme ceci :
    Image fond = getToolkit().getImage("images/fond.jpg");
    J'ai ensuite redefinit la methoe PaintComponent ainsi :

    public void paintComponent(Graphics g)
    {
    super.paintComponent(g);
    g.drawImage(fond, 0, 0, getWidth(), getHeight(), this);
    }
    l'image s'affiche bien aucun probleme

    seulement voila je veux maintenant afficher une image dans une JFrame qui contient 3 JPanels different comment dois je proceder ? je dois redefinir la methode PaintComponent de ces diffenrent panel ? si oui comment ?

    Merci.

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Suffit de rendre le fond de tes panels transparents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monPanel.setOpaque(false);

  3. #3
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 241
    Par défaut
    Ce n'est pas la peine si les 3 panels instancient la même classe.

    Si suffit juste de mentionner lors de la construction l'image à afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MonPanel p1 = new MonPanel(monImage1);
    MonPanel p2 = new MonPanel(monImage2);
    MonPanel p3 = new MonPanel(monImage3);
    Ensuite tu ajoutes les panels à la frame sans oublier d'indiquer à la frame quel layout utiliser.

    A+

  4. #4
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par Mister Nono
    Si suffit juste de mentionner lors de la construction l'image à afficher
    Mais ça n'existe pas ce constructeur !? Je ne comprends pas ta solution. En quoi passer l'image en paramètre va faire qu'elle se dessine ?
    Et en quoi cela va permettre de dessiner l'image avec des bounds corrects ?

  5. #5
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 241
    Par défaut
    Et bien il faut surcharger le construction par défaut de java.

    Cette solution fonctionne puisque j'ai réalisé auparavant une appli qui affichait des images dans une frame. Ou alors je n'ai pas compris le problème initial.

    A+

  6. #6
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par Mister Nono
    Et bien il faut surcharger le construction par défaut de java.
    Oui mais ça ne se fait pas tout seul ensuite l'affichage de l'image. Tu ne donnes qu'une partie de ta solution.

  7. #7
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 241
    Par défaut
    De mémoire, je ne me rappelle pas.

    Tu peux, par exemple (il y a peut-être mieux), insérer les panels dans une liste.

    Dans le repaint de la frame, faire un parcours de la liste, récupérer donc un pointeur sur les panels et faire :

    Donc quand la frame est redessinée (par exemple : maFrame.paint()) les panels le sont aussi.

    A+

  8. #8
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Oula non.
    On ne devrait jamais avoir à appeler paint() ! C'est vraiment pas optimisé car ça va redessiner à chaque fois tout !
    Le setOpaque(false) est la bonne solution.

  9. #9
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 241
    Par défaut
    C'était un exemple, et il y a des fois où le paint() doit être appelé.

    De toute façon, dès qu'un conteneur est déplacé, agrandi... la méthode paint() est appelée.

    A+

  10. #10
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par Mister Nono
    C'était un exemple, et il y a des fois où le paint() doit être appelé.

    De toute façon, dès qu'un conteneur est déplacé, agrandi... la méthode paint() est appelée.

    A+
    En général on appelle la méthode repaint() et pas paint()...

  11. #11
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 241
    Par défaut
    Oui, oui bien sûr.

    Il n'y a qu'à lire la javadoc pour rectifier ce petit détail.

  12. #12
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    ok ok merci bien mais que fait exactement la methode setOpaque ?

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Elle dit au composant si il doit dessiner son background ou pas, par exemple un JPanel est juste un JComponent donc on a passé le paramètre opaque à true.

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

Discussions similaires

  1. [AWT/SWING] Déplacer une image sur plusieurs JPanel
    Par Dark_TeToN dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 08/09/2010, 09h10
  2. [C#] Comment inserer Image depuis une ressource ?
    Par EagleEye dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/01/2006, 13h09
  3. inserer image?
    Par lakhlifi dans le forum 2D
    Réponses: 18
    Dernier message: 15/12/2005, 22h44
  4. [JFrame] ajout de plusieurs JPanel
    Par illegalsene dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 06/04/2005, 00h11
  5. [Swing] images et jPanel
    Par nma dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/10/2004, 23h20

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