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 :

Mise en forme d'une JFrame


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é
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Par défaut Mise en forme d'une JFrame
    Bonjour,
    je dois obtenir la mise en forme suivante à partir d'un JLabel et de 4 boutons:


    Il y a moyen de le faire plus simplement qu'en utilisant un GridBagLayout?
    Si non, j'ai essayé et j'arrive à mettre en forme mon JLabel et le premier bouton(Bouton 1) tout à gauche, mais je n'arrive pas à mettre les 3autres boutons à sa droite...
    Pouvez vous m'aider?

    Voici le début:
    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
     
    GridBagLayout l = new GridBagLayout();
    getContentPane().setLayout(l);
     
    GridBagConstraints c = new GridBagConstraints
    (0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, 
    GridBagConstraints.BOTH, new Insets(10, 10, 10, 10), 0, 0);
     
    l.setConstraints(MonJLabel, c);
    getContentPane().add(MonJLabel);
     
            c.gridx = 0;
            c.gridy = 1;
            c.anchor = GridBagConstraints.WEST;
    	c.fill = GridBagConstraints.NONE;
    	c.weightx = 0;
    	c.weighty = 0;
    	l.setConstraints(bouton1, c);
    	getContentPane().add(bouton1);
    Merci!

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut Solution possible...
    Bonjour,

    Perso, j'ai abandonné l'utilisation des Layout, c'est trop contraignant.
    Si on ne connaît pas à l'avance la résolution, ou que celle-ci peut changer, il n'y a pas mieux, mais quand on a la chance d'évoluer sans modifications de résolution tout en connaissant cette dernière, comme dans votre cas, autant s'en passer.
    Prenez une feuille de papier, et calculez la position en x et y de chacun de vos composants sachant que vous allez placer leur coin supèrieur gauche.
    Ensuite, déterminez leur dimensions en largeur et haureur, puis :
    1) faite un setLayout(null) sur votre 'container'.
    2) pour chacun de vos composant, avant de le mettre en place dans le 'container', faites leur un setBounds(x, y, largeur, hauteur).

    Si jamais vous trouvez cela trop contraignant, pour une telle mise en page, ne vous gâchez pas la vie avec un GridBagLayout qui a ma connaissance est le plus complexe des layouts. Laissez le layout par défaut (un FlowLayout), settez les dimensions préférées de vos composant, et insérez-les dans l'ordre, ça devrait se positionner tout seul.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Par défaut
    Merci pour ton aide Pursang. Mais pour bien faire je devrais utiliser un gridbaglayout


    Quand je rajoute ceci au code déjà donné plus haut le bouton2 s'affiche très loin à droite du bouton1, or je voudrais qu'il soit mis juste à côté...

    Code ajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    c.gridx = 1;
    l.setConstraints(bouton2, c);
    getContentPane().add(bouton2);
    Savez vous d'ou peut venir le problème? Je dois peut etre modifier des chiffres dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    GridBagConstraints c = new GridBagConstraints
    (0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, 
    GridBagConstraints.BOTH, new Insets(10, 10, 10, 10), 0, 0);
    Merci d'avance pour votre aide!

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    d'abord, abandonner les layout, c'est retourner 20 ans en arrière, à une époque où on ne pouvait même pas redimensionner les fenetres sous peine de perdre des boutons ou des controle. Aujourd'hui, je ne connais aucune application qui ne repositionne pas ses élément en fonction de la taille de la fenetre, alors la position absolue, t'évite.


    Pour ton problème, je dirais que le plus simple serait de faire comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BorderLayout
     |- Center
     |      - JPanel du haut
     |- South
            - JPanel en BoxLayout Horizontal
                  - Bouton1
                  - Bouton2
                  - Bouton3
    Tu peux insérer des Box.createHoritontalGlue(n) entre tes boutons pour maintenir un espace. Si tu veux que tes boutons occupent plusieurs lignes quand la fenêtre est étroite, utilise un FlowLayout plutot qu'un BoxLayout.

    Le gridbaglayout, c'est puissant, presque autant que le SpringLayout, mais quand on sais éviter ces deux là, on le fait, question de lisibilité du code :p

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Par défaut
    Merci tchize_, j'y suis arrivé avec ta méthode

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut Pour ta gouverne Tchiiz
    Toutes les applications plein écran ne redimensionnent rien, et les jeux non plus que je sache, et ils ne sont pas remontés 20 ans en arrière.
    Les layout, c'est plutôt pour pas se poser trop de questions, mais si on veut mettre un composant en contrôlant son positionnement x et y ainsi que sa taille, je ne vois pas quel miracle permettrait aux layout de le faire...
    Qui plus est, je ne donnais qu'une solution possible, contrairement à certains, je ne prétend pas détenir la vérité ni la connaissance absolue pour me permettre de juger une réponse.
    Mis à part, si ta solution est mieux, et bien, tant mieux, ça m'aura aussi permis d'évoluer...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

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

Discussions similaires

  1. Pb de mise en forme dans une liste de selection
    Par crashyear dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2006, 12h58
  2. changer la mise en forme d'une partie d'un textarea
    Par gedeon555 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/08/2006, 12h48
  3. vb6 & excel : mise en forme d'une cellule
    Par couscoussier dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 23/03/2006, 19h12
  4. Sauvegarder une mise en forme dans une RichTextBox
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 29/12/2005, 13h19
  5. [VB.NET] Mise en forme d'une datagrid suivant une valeur
    Par Nesmontou dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/06/2005, 12h51

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