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 :

rafraichissement JLable et images


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut rafraichissement JLable et images
    bonsoir deja a tous

    voila bien 2 semaine que je n'arrive plus a avancer dans un jeu que je crée en java

    mon rpobleme est simple: je crée une fenetre de type JFRAME qui superpose un tas de label que represente linterface graphique du jeu

    jaffiche ensuite cette fenetre a l'aide dun actionlistener sur un bouton dune autre fenetre

    bien maintenant je voudrait juste pouvoir ajouter des Jlabel(imagges) dans cette fentre mais que ce soit visible car jai remarquer que si l'on fait:

    add(image1)
    add(image2) ce sera image 1 quis era au dessus de image 2

    et la ma fenetre est deja toute crée donc les add on deja etait executer et si je crée un nouveau JLabel et que je l'add il ne s(affiche pas car ce add vient apres tout les autres donc...
    voila en gros je veux apres avoir ouvert ma fenetre graphique pouvoir ajouter des JLabels au dessus des ancien JLabels et tout sa quand jappuie sur un bouton ...
    aider moi svp si vous pouver pas existe til dautre solution pour arriver au meme resultat?

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Alors :

    1) s'il te plait, fait des efforts de rédaction et de présentation pour expliquer ton problème, c’est limite incompréhensible.

    2) cette question ne semble pas trop liée (pour l'instant) à du graphisme 2D mais bien à du Swing. Je me réserve donc de déplacer ce sujet ultérieurement si cela se confirme dans le bon forum.

    3) enfin, montrer un peu plus de code pour expliquer comment tu procèdes peut inciter les gens à répondre plus rapidement.

    Le positionnement de tes labels dépend de ton layout. Tu peux mettre ce layout a null ce qui te permettra de positionner tes labels ou bon te semble avec setLocation() et setBounds() mais il te faudra alors leur donner une taille correcte (puisqu’en général cette taille est calculée pour toi par le layout). Ensuite avec les layouts et les méthodes d'ajout d'un composant dans un autre de base, il est normal que le dernier composant soit par dessus les autres.

    S’il ne s’affiche pas c’est peut-être que tu as oublie de demander un repaint() ou un revalidate() de ton conteneur parent après l’ajout.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    trés bien vous pouvez déplacer ce topic au bon endroit...

    j'utilise le mode de placement absolue (setLayout(null)) et je comprend bien qu'avec les methodes d'add des elements on ne voit pas mon JLabel.

    je demendai juste si vous aviez une solution a ce probleme c'est a dire que dés que j'appuie sur un bouton un Nouveau JLabel est ajouter et apparait...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    oula je n'ai pas bien lu ta reponse mais elle est en partie fausse...
    ce n'est pas le dernier composant qui est visible mais c'est le premier:

    add(image1)
    add(image2)

    c'est image1 qui sera au dessus de image 2 si c'etait le contraire je n'aurai aucun probleme...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    je renouvelle une derniere fois mon probleme et si personne ne trouve c'est bien dommage je verrai sur un autre forum :'(

    mon problem est simple j'ai une classe qui extends JFrame et qui crée une fenetre
    jajoute plein de JLabel qui sont en fait des images

    quand je clike sur un bouton je veux ajouter encore un JLabel au dessu de tout les autres grace a actionlisteners

    sauf que quand je fait ceci l'image est ajouter en dernier donc n'est pas visible

    si vous avez des solution avec les methodes paint() je suis ouvert a toute proposition

    voila merci a ceux qui repondent

  6. #6
    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
    Dans ton cas je partirais plutôt sur du dessin en java2D et donc de la redéfinission de paintComponent

    Il te suffit de créer une classe contenant une Image et sa position

    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
     
    public class MyImage {
            Image im;
            Point position;
     
            public MyImage(Image im, Point position) {
                    this.im = im;
                    this.position = position;
            }
     
            public MyImage(Image im, int x, int y) {
                    this.im = im;
                    this.position = new Point(x,y);
            }
     
            public void setImage(Image im) {
                    this.im = im;
            }
     
            public Image getImage() {
                    return image;
            }
     
            public void setPosition(Point p) {
                    this.position = p;
            }
     
            public Image getPosition() {
                    return position;
            }
     
    }
    Puis de redéfinir un JPanel afin qu'il affiche une liste de ces images.

    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
     
    public class MyPanel extends JPanel {
            private ArrayList<MyImage> images;
     
            public MyPanel() {
                    super();
                    images = new ArrayList<MyImage>();
            }
     
            public void addImage(MyImage im) {
                    images.add(im);
                    repaint();
            }
     
     
            @override
            protected void paintComponent(Graphics g) {
                    super.paintComponent(g);
                    for(MyImage im : images) {
                            g.drawImage(im.getImage(), im.getPosition().x,im.getPosition().y, null);
                    }
            }      
    }
    La dernière image ajoutée étant la dernière affichée...

    C'était pas la mort non plus, suffit simplement de connaitre un poil Swing.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    ooui c'est sur mais sa repond pas du tout a ma question :d

    moi je demende juste comment faire pour rendre une image visible dés que l'on appuie sur un bouton je ne cherche pas a afficher des listes d'image ou je ne sait trop quoi

    j'ai une table de jeu et je veux que quand j'appuie sur le bouton continuer on m'affiche une image au dessus de toutes les autres ^^

  8. #8
    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
    Bah si, la méthode addImage dans MyPanel sert à quoi à ton avis?

    Et pour afficher au dessus de tout il te suffit de mettre ton image au niveau du GlassPane (donc créer un composant héritant de JComponent et redéfinissant la méthode paintComponent pour afficher l'image au bon endroit.

    Bref c'est quasiment ce que je t'ais filé, il te suffit de faire un setGlasspane sur ta JFrame avec un MyPanel contenant une image...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    ce serait possible de pouvoir te parler en pv ou quelque part d'autre parce que je suis pas sur de bien comprendre tout ce que tu a mis.
    jimagine que sa resoud bien mon probleme mais moi j debute en java et je peux pas me permettre de faire des copier coller il faut que je comprenne ^^

    tient moi au courant

  10. #10
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bon, j'arrive en retard, et pour ce que tu veux faire, la meilleure manière de procéder t'a été indiquée par Bouye et Sinok.
    Une bricolage pour éviter de tout passer en Java2D (ce qui est mieux mais long à faire) serait d'utiliser un JLayeredPane dans lequel tu ajoutes les JLabels, à l'endroit et à la "hauteur" que tu veux.
    "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.

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Le mot est "profondeur" ou "z-order" il me semble .
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    je peux avoir des renseignement sur ce JLayeredPane??
    et est il possible dajouter un label au dessus des autre a nimporte kel moment?

  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
    http://java.sun.com/docs/books/tutor...yeredpane.html

    Mais si ton appli ne fait que de la gestion d'images, je te conseille plus que fortement de procéder de l'autre façon (à grand coups de paintComponent)

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    ben en fait c un jeu et jai besoin de a chaque fois une action quand je clike sur un bouton et cette action est d'une part algorithmique mais en grande partie graphique avec laffichage d'images

    mais je voulait savoir si meme si la Frame est deja afficher avec le paintcomponent on pe afficher des JLbale au dessus de tout les autres?

Discussions similaires

  1. Rafraichissement d'une image de fond JFrame
    Par bastien dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 30/04/2010, 20h41
  2. Rafraichissement de l'image avec pygame + opengl
    Par bourriquet_42 dans le forum OpenGL
    Réponses: 1
    Dernier message: 23/03/2009, 18h22
  3. Rafraichissement d'une image
    Par jerzy59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/04/2007, 14h59
  4. [Image]Rafraîchissement d'une image
    Par Zen_Fou dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 15/05/2006, 18h33
  5. [MFC] probleme de rafraichissement d'une image
    Par Vestaproman dans le forum MFC
    Réponses: 6
    Dernier message: 09/01/2004, 23h59

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