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 :

[SWING]affichage d'une image


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut [SWING]affichage d'une image
    bonjour,
    j'ai créé une classe myJFrame qui me permet de créer des fenetres personnalisées. pour affecter un fond d'écran a ma fenetre, j'ai créé une classe AfficheImage() que j'appelle au moment de la déclaration de mes myJFrame. Cependant, ça ne m'affiche aucune image.
    donc ma question est la suivante :
    est-ce qu'il est indispensable de mettre un JPanel dans ma JFrame pour que l'image de fond d'écran s'affiche ?
    merci

  2. #2
    Membre confirmé Avatar de lebesnec
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Par défaut
    Salut,

    je suis pas sur d'avoir compris exactement ce que tu veut, mais jette un coup d'oeil la dessus : http://java.developpez.com/faq/java/...E_fond_fenetre

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    je t'explique.
    j'ai créé une classe qui me permet de créer des fenetres. le truc c'est que j'ai cherchésur pleins de site, j'ai trouvé pleins de bouts de code pour afficher une image en fond d'écran de mes fenetres et aucun code ne fonctionne. donc je comprend pas pourquoi ça marche pas.
    donc ce serait quoi la meilleure démarche ?
    crée un Panel dans ma fenetre pour pouvoir y mettre une image de fond d'écran ou bien on peut ajouter une image comme si on ajouté betement un bouton ?

  4. #4
    Membre confirmé Avatar de lebesnec
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Par défaut
    une image n'est pas un composant graphqiue, donc on ne peut pas l'ajouter comme un bouton ...
    Il faut dessiner l'image sur un panel, puis ajouter le panel.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    ok.
    donc si j'ai bien compris, je crée un panneau, je lui ajoute l'image, ensuite je peux lui ajouter des boutons. et j'ajoute le tout a ma JFrame ?

  6. #6
    Membre confirmé Avatar de lebesnec
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Par défaut
    ouep, c'est ça en gros.
    Mais jette un coup d'oeil la dessus, c'est exactement ce que tu veut faire (enfin je crois), et ça marche nickel :
    http://java.developpez.com/faq/java/...E_fond_fenetre

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    bah écoute j'ai créé une classe myJPanel, et une classe myJFrame. j'ajoute les boutons et le fond d'écran sur mon panneau. j'ajoute ensuite le panneau a ma fenetre. et bien je me retrouve avec une fenetre vide lors de l'exécution. pas de fond d'écran, ni de boutons
    je précise que je suis sous JBuilder et que j'utilise la bibliotheque XYLayout pour pouvoir placer plus facilement mes objets !

  8. #8
    Membre confirmé Avatar de lebesnec
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Par défaut
    hum ... comment tu ajoute le "fond d'écran" ???
    Met un bout de ton code ici, ça sera plus facile de savoir d'ou vient le problème.

  9. #9
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 32
    Par défaut
    tu peux dessiner ton image avec la méthode paint()

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void paint(Graphics g){
    g.drawImage(monImage);
    }
    Bien sur auparavant il faut que tu déclare et que tu charge ton image

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    alors
    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
    public class myJPanel extends JComponent
    {
        int h_f, l_f;//hauteur fenetre, largeur fenetre
        XYLayout bordure_panel = new XYLayout();
     
        //variable de classe contenant l'image à afficher en fond
        public Image img;
     
        myJPanel(int posx,int posy,int largeur, int hauteur, String nomImage)
        {
            h_f = hauteur;
            l_f = largeur;
            bordure_panel.setHeight(h_f);
            bordure_panel.setWidth(l_f);
     
            if (!nomImage.equals(""))
            {
                java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
                img = toolkit.getImage(nomImage);
            }
            setSize(l_f, h_f);
            setVisible(true);
        }
     
        // Surcharge de la fonction paintComponent() pour afficher notre image
        public void paintComponent(Graphics g)
        {
            g.drawImage(img,0,0,null);
        }
    }
    ensuite classe myJFrame
    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
     
    public class myJFrame extends JFrame {
     
        XYLayout bordure_frame = new XYLayout();
        Container f = getContentPane();    myJPanel interieur;
     
        public myJFrame() {
            new JFrame();
        }
     
        public void create_fenetreFS(String nomFenetre,int posx, int posy ,int largeur, int hauteur,String nomImage )
        {
            setLocation(posx,posy);
            interieur = new myJPanel(posx,posy,largeur, hauteur, nomImage);
     
            bordure_frame.setHeight(hauteur);
            bordure_frame.setWidth(largeur);
     
            f.setLayout(bordure_frame);
            f.setSize(largeur, hauteur);
         }
     
        public void afficher()
        {
            setResizable(true);
            setVisible(true);
            show();
            pack();
        }
     
     }
    puis l'utilisation
    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
     
    public class menuPrincipal extends myJFrame implements ActionListener {
     
        myJButton b_creer;
        Dimension tailleEcran = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        int max_largeur = (int)tailleEcran.getWidth();
        int max_hauteur = (int)tailleEcran.getHeight();
     
    private void InitMenu() throws Exception {
     
    create_fenetreFS("Menu Principal",0,0,max_largeur,max_hauteur,"fond1280x1024.jpg");
    b_creer = new myJButton("CREER UNE ANIMATION");
    b_creer.addActionListener(this);
    interieur.add(b_creer, new XYConstraints(109, 74, 183, 43));
    f.add(interieur);
    }
    j'espere que ça pourra t'aider

  11. #11
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 32
    Par défaut
    Tu es sur que ton image est située au bon endroit? Parce que même s'il ne la trouve pas, la machine virtuelle java ne génère pas d'exception pour ca!!! Sinon essaye de réduire et rétablir la fenêtre pour faire un repaint().

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    bah l'image se trouve dans le meme repertoire que les fichiers sources de mon application. donc oui elle est présente la

  13. #13
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 32
    Par défaut
    il faut que ton image soit avec tes classes, pas avec tes sources!!!

  14. #14
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    j'ai déplacé les images dans le repertoire des classes, rien n'a changé.
    et puis ça n'explique pas pourquoi mes boutons ont disparus :s

  15. #15
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 32
    Par défaut
    essaye de mettre la méthode paint() dans la JFrame. Sinon pourquoi tu étend ton JPanel à JComponent et pas à JPanel? Si tes boutons disparaisse c'est normal, c'est à cause de la méthode paint(). Il y a un moyen simple de résoudre ce problème. Je ne me souvient plus de comment on fait!!!

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Déjà vérifie bien qu il trouve ton image, ajoute dans ta méthode create_fenetreFS (...) qchose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File f = new File(monImage);
    System.out.println("Image trouvée : "+f.exists());
    Ensuite dans la méthode paintComponent rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    super.paintComponent(g);
    au début

  17. #17
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    alors, ton code a corigé quelques bugs, les boutons ont réapparus, et il me dit qu'il ne trouve pas mon image :s. je vais essayer de comprendre pourquoi.
    merci

  18. #18
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Si tu veux savoir ou il va chercher ton image tu peux utiliser le debugger (trop souvent ignorer ) ou alors faire un affichage du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File f = new File(monImage);
    System.out.println(f.getAbsolutePath());
    Et la il te donne le chemin complet du fichier qu'il teste.

  19. #19
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    c'est bizare parce que le chemin qu'il trouve pour mon image ne correspond pas du tout a l'emplacement de mon image. j'ai vérifié et a l'emplacement qu'il m'indique (avec ta manipe), il n'y a pas d'images.
    par contre je me demandais : si mon image se trouve dans le meme repertoire que mes fichiers .class, normalement je n'ai pas besoin de préciser le chemin complet des images ?

  20. #20
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    bon
    je viens de comprendre. en fait, avec JBuilder, les images doivent se trouver a la racine du projet. par contre, mon panneau recouvre mon fond d'écran. comment je pourrais dire au panneau de s'afficher de façon transparente ?

Discussions similaires

  1. affichage d'une image avec du swing
    Par burzno dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 26/05/2007, 18h04
  2. Réponses: 2
    Dernier message: 27/12/2004, 09h23
  3. Pbs d'affichage d'une image sur un panel
    Par ysr1 dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/09/2004, 09h55
  4. [FLASH MX] Qualité d'affichage d'une image
    Par n_tony dans le forum Flash
    Réponses: 3
    Dernier message: 16/08/2004, 09h44
  5. Affichage d'une image sous linux
    Par Braim dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 25/03/2003, 10h41

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