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

Interfaces Graphiques en Java Discussion :

JLayeredPane superposition de label


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 55
    Par défaut JLayeredPane superposition de label
    bonjour à tous,
    j'ai créé une petite interface graphique avec pas mal de JPanel
    mon soucis vient du fait que j'utilise des images pour le dessin à l'intérieur
    je n'arrive pas à superposé les panels entre eux
    j'ai trouvé l'utilisation de JLayeredPane (pour monter ou descendre des JPanel) mais je n'arrive pas à le faire fonctionner. Je n'ai meme pas le fond qui s'affiche

    voici mon code
    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
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.Image;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JLayeredPane;
    import javax.swing.JPanel;
     
     
    public class JPiece extends JPanel {
     
    	private int p_choix, g_x, g_y;
     
    	public JPiece(){
    	}
     
    	public JPiece(int choix, int x, int y) {
    		super();
    		this.setLayout(new BorderLayout());
    		JLayeredPane lp = new JLayeredPane();		
    		g_x = x;
    		g_y = y;
    		JPanel panel1 = new JPanel();
    		JPanel panel2 = new JPanel();
    		JPanel panel3 = new JPanel();
    		JPanel panel4 = new JPanel();
    		JPanel panel5 = new JPanel();
    		panel1.setLayout(new BorderLayout());
    		panel2.setLayout(new BorderLayout());
    		panel3.setLayout(new BorderLayout());
    		panel4.setLayout(new FlowLayout());
    		panel5.setLayout(new GridLayout(2,0));
     
    		// chargement des options multimédia
    		JLabel label1 = new JLabel("Multimédia");
    		ImageIcon im1 = new ImageIcon("lecture.gif");
    		im1 = redim(im1, 60, 60);
    		JButton lecture = new JButton(im1);
    		ImageIcon im2 = new ImageIcon("stop.gif");
    		im2 = redim(im2, 60, 60);
    		JButton stop = new JButton(im2);
    		JPieceFond fond = new JPieceFond(g_x, g_y);
     
    		// on met dans les pannels
    		panel5.add(lecture);
    		panel5.add(stop);
    		panel4.add(label1);
    		panel3.add(panel4, BorderLayout.NORTH);
    		panel3.add(panel5, BorderLayout.CENTER);
    		panel1.add(panel2.add(fond), BorderLayout.CENTER);
    		panel1.add(panel3, BorderLayout.EAST);
    		lp.add(panel1, new Integer(0));
    		//this.add(panel1);
     
    		p_choix = choix;
    		if(choix == 0){
    			// 1 HP
    			JFenetre fen = new JFenetre(g_x, g_y, 1);
    			//this.add(fen);
    			//lp.add(fen, new Integer(2));
    		}
    		if(choix == 1){
    			// 2 HP
     
    		}
    		if(choix == 2){
    			// 5 HP
     
    		}
    		if(choix == 3){
    			// 7 HP
     
    		}
    		if(choix == 4){
    			// 9 HP
     
    		}
    		this.add(lp);
    		this.setVisible(true);
    	}
     
    	private static ImageIcon redim(ImageIcon source, int heigth, int width){
    		return new ImageIcon(source.getImage().getScaledInstance(width, heigth, Image.SCALE_SMOOTH));
    	}
    }
    je sais qu'il n'est pas très propre mais pour le moment je veux juste faire fonctionner tout le panel1 en fond et fen au dessus...

    si vous pouvez m'aider

    merci beaucoup

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 55
    Par défaut
    c'est bon j'ai trouvé
    il fallait tout simplement rajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setBounds(0, 0, p_xmax, p_ymax);

    pour les panels et ensuite tout fonctionne correctement

    ca reste étrange de mettre ceci sachant que j'utilise les différents layout ..

  3. #3
    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
    Le problème vient du fait que la quasi totalité des Layers du JLayeredPane ne possèdent pas de Layout par défaut. Il faut donc utiliser du setBounds, ou encore mieux, affecter un Layout aux Layers utilisées.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 47
    Par défaut
    Comment peut-on faire pour attribuer un layout aux layers ??

    Pas très pratique les JLayeredPane et le setBounds notamment..

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

Discussions similaires

  1. Problème de superposition avec JLayeredPane
    Par DieNah dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 15/11/2012, 16h39
  2. [XL-2007] Superposition de label
    Par neoinfo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/10/2012, 20h29
  3. probleme superposition JLayeredPane
    Par bbtreso dans le forum Débuter
    Réponses: 1
    Dernier message: 18/05/2011, 16h18
  4. Superposition des couches labels
    Par cmail dans le forum IGN API Géoportail
    Réponses: 10
    Dernier message: 03/03/2010, 18h42
  5. superposition flexgrid et label
    Par ben83 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 24/02/2007, 09h04

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