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 :

Redimensionnement de JPanel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut Redimensionnement de JPanel
    Bonjour,
    Je suis sur un projet qui est le jeu 2048, j'ai deux JPanel, une en-tête et ma grille et je voudrais que mon en-tête soit plus petite que ma grille, mais lors de l'affichage, les deux JPanels font la même taille, serait-il possible d'être aidé, merci.

    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
     
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.SwingConstants;
     
    public class deuxmillesquarantehuit extends JFrame implements KeyListener, ActionListener{
     
    	private static final long serialVersionUID = 1L;
    	private JLabel[][] casse;//=case 
    	private JLabel logo;
    	private JPanel entete;
    	private JPanel grille;
    	private int nbLigneTab=4;
    	private int nbColonneTab=4;
     
    	public deuxmillesquarantehuit(){
    	    this.setTitle("2048");
    	    this.setSize(600, 800);
    	    this.setLayout(new GridLayout(2,1));
    	    this.setLocationRelativeTo(null);//Nous demandons maintenant à notre objet de se positionner au centre
    	    this.setResizable(false);
    	    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    	    entete();
    	    grille();
     
    	    this.setVisible(true);
    	}
     
    	public Container entete()
    	{
    		entete = new JPanel();
    		entete.setSize(600, 200);
    		entete.setLayout(null);
    		entete.setBounds(0, 0, 600, 200);
    		entete.setOpaque(true);
    		entete.setBackground(Color.white);
    		entete.setBorder(BorderFactory.createLineBorder(Color.black));
    		getContentPane().add(entete);
     
    		logo = new JLabel("2048", SwingConstants.CENTER);
    		entete.add(logo);
    		logo.setFont(new Font("Arial", Font.BOLD, 25));
    		logo.setLayout(null);
    		logo.setBounds(10,10,100,100);
    		logo.setOpaque(true);
    		logo.setBackground(Color.yellow);
    		logo.setBorder(BorderFactory.createLineBorder(Color.black));
     
    		return entete;
    	}
     
    	public Container grille()
    	{
    		grille  = new JPanel();
    		grille.setSize(600, 600);
    		getContentPane().add(grille);
    		grille.setLayout(new GridLayout(4,4,2,2));
    		casse = new JLabel[4][4];
    		for(int i = 0 ; i < nbLigneTab ; i++) 
    		{
    			for(int j = 0 ; j < nbColonneTab ; j++)
    			{
    				casse[i][j] = new JLabel("", SwingConstants.CENTER);
    				casse[i][j].setOpaque(true);
    				casse[i][j].setBackground(Color.white);
    				casse[i][j].setBorder(BorderFactory.createLineBorder(Color.black));
    				casse[i][j].setFont(new Font("Arial", Font.BOLD, 50));
    				grille.add(casse[i][j]);
    			}
    		}
     
    		return grille;
    	}

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu as mis un GridLayout sur la JFrame, ce qui fait que chaque composant mis dans la grille a les mêmes dimensions. Tu peux utiliser un BorderLayout à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     //this.setLayout(new GridLayout(2,1));
    this.setLayout(new BorderLayout());
    La grille doit être placée au centre, ce qui fera quelle s'étendra au maximum de l'espace disponible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getContentPane().add(grille,BorderLayout.CENTER);
    Et l'entête au nord, en lui indiquant sa taille préférentielle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // entete.setBounds(0, 0, 600, 200);
    entete.setPreferredSize(new Dimension(600,200));
    ...
    getContentPane().add(entete, BorderLayout.NORTH);
    Il est inutile d'appeler setSize() ou setBounds() sur des composants que l'on met dans un conteneur qui a un LayoutManager, qui est là justement pour déterminer les positions et dimensions des composants dans le conteneur, et va remplacer les positions et dimensions qu'on aura pu affecter par ces méthodes.

    Accessoirement, voici un exemple pour centrer ton titre :

    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
    public Container entete() {
     
       entete = new JPanel();
       entete.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 50)); // le 50 permet d'avoir un espace plus grand entre le logo et la bordure de l'entête (5 par défaut)
       entete.setOpaque(true);
       entete.setBackground(Color.white);
       entete.setBorder(BorderFactory.createLineBorder(Color.black));
       getContentPane().add(entete, BorderLayout.NORTH);
     
       logo = new JLabel("2048", SwingConstants.CENTER);
       entete.add(logo);
       logo.setFont(new Font("Arial", Font.BOLD, 25));
       logo.setPreferredSize(new Dimension(100,100));
       logo.setOpaque(true);
       logo.setBackground(Color.yellow);
       logo.setBorder(BorderFactory.createLineBorder(Color.black));
     
    return entete;
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Redimensionner un JPanel dynamiquement
    Par GagDusH dans le forum NetBeans
    Réponses: 1
    Dernier message: 15/01/2013, 11h59
  2. Redimensionnement de Jpanel
    Par toma03 dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 13/08/2009, 12h19
  3. redimensionner un Jpanel
    Par jeanfeu dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 21/07/2008, 11h49
  4. Redimensionner un jPanel
    Par free-lance dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 30/04/2008, 09h12
  5. Redimensionner un JPanel
    Par Gxouxou dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 12/05/2007, 04h23

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