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

 Java Discussion :

Problème superposition image


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 42
    Par défaut Problème superposition image
    En fait je développe un petit jeu tout simple pour débuter en java, donc je voudrais simplement une grille, et une image que je peux déplacer avec les flèches directionnelles sur cette grille. Donc j'ai utilisé la classe GridLayout pour afficher une grille dans ma fenêtre, pour les déplacements il n'y a pas de souci, mais le problème est que je n'arrive pas a superposer mon image sur la grille pour quelle puisse naviguer sur toute la grille.

    Je suis ouvert à toute solution

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Tu pourrais peut-être poster ton code afin que l'on te propose une ou des solutions adaptées.

    A titre de proposition, je suppose que tu as ajouté des composants via ton layout, peut-être des JButton. Ainsi tu peux facilement afficher des images avec la méthode setIcon(Icon), avec des objets de type ImageIcon.

    Après tout dépend comment tu voudrais que le "déplacement" s'effectue. De case en case ou pixel par pixel ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 42
    Par défaut
    Alors voila mon code : test.java
    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
     
    import java.awt.Color;
    import java.awt.GridLayout;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.border.Border;
     
    public class test extends JFrame implements KeyListener
    {
        private int x = 5;
        private int y = 5;
        //Création du panel conteneur
        private JPanel pane = new JPanel(); 
        //création du panel du score
        private JPanel panelScore = new JPanel();
        //label contenant l'image
        private JLabel grinch = new JLabel( new ImageIcon("image/test.jpg"));
        //label contenant le cadeau
        private JLabel cadeau = new JLabel( new ImageIcon("image/cadeau.gif"));
     
        public test()
        {
            super();
     
            build();//On initialise notre fenêtre
            this.addKeyListener(this);
        }
     
        private void build()
        {
            setTitle("Jeu du Grinch"); //On donne un titre à l'application
            setSize(400,452); //On donne une taille à notre fenêtre
            setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
            setResizable(true); //On ne permet pas le redimensionnement
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
            setContentPane(buildContentPane());
        }
     
        private JPanel buildContentPane()
        {
            //création de ma grille
            JPanel pan = new JPanel (new GridLayout (6,6));
     
            //on fait apparaitre les bordures
            Border blackline = BorderFactory.createLineBorder(Color.black,1); 
     
            for(int i = 0; i<36;i++)
            {
               JPanel ptest = new JPanel();
               ptest.setBorder(blackline);
               pan.add(ptest);   
            }
     
            grinch.setBounds(x, y, 25, 25);//redimension du composant et positionnage
            pan.add(grinch);
     
     
            return pan;
        }
     
        public void keyPressed(KeyEvent k) {
     
            int Caract = k.getKeyCode();
     
            //if qui compare les coordonnées du grinch et du cado
     
            //on fait bouger l'image vers le haut
            if(Caract==KeyEvent.VK_UP)
             {
                if(y>5)
                    y = y - 10;
                grinch.setLocation(x, y);
             }
     
            //on fait bouger l'image vers le bas
             if(Caract==KeyEvent.VK_DOWN) 
             {
                 if(y<335)
                     y = y + 10;
                 grinch.setLocation(x, y);
             }
     
             //on fait bouger l'image vers la droite
             if(Caract==KeyEvent.VK_RIGHT) 
             {
                 if(x<365)
                     x = x + 10;
                 grinch.setLocation(x, y);
             }
     
             //on fait bouger l'image vers la gauche
             if(Caract==KeyEvent.VK_LEFT) 
             {
                 if(x>5)
                     x = x - 10;
                 grinch.setLocation(x, y);
             }
     
        }
     
        public void keyReleased(KeyEvent arg0) {}
        public void keyTyped(KeyEvent arg0) {}
    }
    Je ne sais pas si il y avait un moyen plus facile pour poster son code pour qu'il soit en couleur donc je m'excuse.
    En fait j'ai une grille formé de plusieurs JPanel, et en fait lorsque j'ajoute mon image "grinch", elle s'ajoute à la suite des Jpanels. Je voudrais simplement qu'elle se superpose pour ainsi être dirigé sur tous les JPanels formant la grille

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Tu as les balises code (bouton #) pour poster ton code. Tu peux editer ton dernier message pour les ajouter. Sinon pourrais-tu mettre tes images en pièce jointe, car je suppose qu'elles ne sont pas très volumineuse.

  5. #5
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Le problème vient du fait que superposer des composants devrait être fait par d'autres voies. Il me semble qu'il existe un layout particulier (je ne me souviens plus le nom) qui permet de superposer des composants (a voir dans la javadoc ou sur dans les tuto de Sun). C'est une possibilité.

    Sinon, supprime tes panel qui forme la grille (avec les borders).
    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
    private JPanel buildContentPane() {
    		// création de ma grille
    		JPanel pan = new JPanel(new GridLayout(6, 6));
     
    		// on fait apparaitre les bordures
    		/*Border blackline = BorderFactory.createLineBorder(Color.black, 1);
     
    		for (int i = 0; i < 36; i++) {
    			JPanel ptest = new JPanel();
    			ptest.setBorder(blackline);
    			pan.add(ptest);
    		}*/
     
    		grinch.setBounds(x, y, 25, 25);// redimension du composant et
    										// positionnage
    		pan.add(grinch);
     
    		return pan;
    	}
    Cela ne correspond pas à ce que tu veux ? (hormis des erreurs de coordonnées).
    Tu pourrais dessiner la grille en surchargeant la méthode paintComponent(Graphics) du panel principal (et d'ailleurs dessiner l'image de cette façon aussi).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 42
    Par défaut
    Voila donc j'ai mis quand même mon image en pièce jointe.

    Parce que en fait je te passe un bout de l'énoncé du jeu que je dois réaliser : Le plateau du jeu est une grille qui représente Whoville. Certaines cases de la grille sont vides et d'autres contiennent des obstacles.
    Au début du jeu, les cadeaux sont distribués aléatoirement dans les cases sans obstacles. Tous les personnages peuvent se déplacer horizontalement et verticalement, case par case, au moyen des touches de clavier.

    Donc je n'arrive pas à trouver un moyen de représenter une grille parce qu'il va falloir manipuler divers cases. Et le personnage, donc l'image qui est en pièce jointe doit pouvoir se déplacer sur cette grille.
    Peut être le GridBagLayer ?
    Images attachées Images attachées  

Discussions similaires

  1. Problème superpositions d'images dans ListView
    Par anto2b dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 18/02/2013, 19h19
  2. [XNA] Problème superposition d'image
    Par Luffy49 dans le forum XNA/Monogame
    Réponses: 1
    Dernier message: 26/02/2008, 11h11
  3. Jframe : Problème de "superposition" image de fond / bouton SUITE
    Par NicolasGuyomar dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 18/03/2007, 13h06
  4. Jframe : Problème de "superposition" image de fond / bouton
    Par lottie dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 15/03/2007, 08h35
  5. Problème d'image avec DirectX9 et c# VS.net...
    Par lilly_lilly dans le forum DirectX
    Réponses: 1
    Dernier message: 02/03/2004, 14h02

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