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

Agents de placement/Fenêtres Java Discussion :

Superposition de panel et set layout(null)


Sujet :

Agents de placement/Fenêtres 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 Superposition de panel et set layout(null)
    bonjour,

    j'ai développé une interface graphique qui englobe pas mal de choses.

    j'arrive facilement à faire tout ce que je veux sauf un truc.

    j'ai une image en fond qui se redimensionne automatiquement lorsqu'il y a redimensionnement de la JFrame.
    je voudrais en fonction de cette image placé des boutons à des endroits bien précis.

    dans le fond de ma figure j'ai aussi des boutons qui utilisent le BorderLayout

    ensuite je monte d'un étage par

    add(panel1, new Integer(0...x));

    mais à un moment j'ai besoin de positionner des boutons. Comment faire ? car je n'arrive pas par exemple, je voudrais un push button sur l'Integer 5 au 3/4 de ma hauteur et au centre en largeur... je ne connais que setbounds mais si je prend sa je suis obligé de mettre le setLayout(null) et donc je perd l'aspect redimenssionement.

    voici le 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
    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);
     
    		// 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(panel3, BorderLayout.EAST);
    		panel1.setBounds(0, 0, g_x, g_y);
    		lp.add(panel1, new Integer(0));
    		// on dessine la pièce
    		p_choix = choix;		
    		JAffichePiece piece = new JAffichePiece(g_x, g_y, p_choix);
    		piece.setOpaque(false);
    		piece.setBounds(0, 0, g_x, g_y);
    		lp.add(piece, new Integer(1));
    		if(p_choix == 0){
    			JAfficheBouton bouton = new JAfficheBouton(g_x, g_y, p_choix);
    			bouton.setBounds(0, 0, g_x, g_y);
    			lp.add(bouton, new Integer(2));
    		}
     
    		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));
    	}
    }

    merci beaucoup pour votre aide

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    vu la particularité de votre layout (alignement sur une image de fond) je vous conseille de créer votre propre layoutManager (ce n'est pas bien compliqué) qui positionne automatiquement les différents éléments aux bons endroit de l'image.

Discussions similaires

  1. Position des composants sur une frame avec layout null
    Par bellemlih dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 14/12/2007, 22h13
  2. [SWING] Donner la taille à un Panel avec Grid Layout
    Par Goupo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 08/06/2007, 00h58
  3. probleme avec le layout null
    Par anisj1m dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 16/04/2007, 23h57
  4. [c++ .net 1.1] limite de superposition de panels
    Par juliano_bipso dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 28/08/2006, 10h40
  5. [Debutante] Le layout "null"
    Par misstinkiete dans le forum Agents de placement/Fenêtres
    Réponses: 18
    Dernier message: 23/07/2005, 22h00

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