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 :

Placement central avec GridBagLayout


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Par défaut Placement central avec GridBagLayout
    Bonjour,

    Je suis actuellement en train de créer une interface client pour un jeu, mais je rencontre un petit problème.

    Pour situer un peu, la fenêtre est totalement redimensionnable avec un minimum de 800x600, et je ne veux pas me baser sur les méthodes de dimensionnement par pixel car les composants seront superposés à une image (pour avoir un meilleur rendu), et au redimensionnement de la fenêtre les composants ne seront plus placé comme il faut par rapport à l'image, d'ou l'utilisation du GridBagLayout que je commence à bien comprendre.

    J'ai déjà essayé l'option JPanel fixe dans JPanel mobile (JPanel a les composants, et comme il est fixe aucun problème avec l'image de fond qui est dans le JPanel en question / l'autre a une image de fond qui se redimensionne automatiquement) mais ça ne me convient pas (trop de problèmes, rendu très mauvais en fonction de la taille de la fenêtre, et rajoute des complications inutiles pour la suite).


    Le problème est que je veux placer par exemple deux JTextField au milieu du JPanel mais impossible sans ajouter d'autres composants avant / après... Exemple :


    Sur cette image je voudrais placer seulement le 'button 2' et le '5' mais SEULS.

    J'ai donc essayé un .add(null, c) sur le JPanel pour rajouter les contraintes 'à vide' mais impossible.
    J'ai essayé de rendre le composant invisible (avec setVisible(false)) mais ça enlève les contraintes avec...


    Si quelqu'un a une idée donc !

    Merci
    Xram3d

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    As-tu essayé les méthodes de la classe Box comme Box.createHorizontalStrut(width), qui permet de créer un composant invisible ?

  3. #3
    Membre éprouvé Avatar de yaraco
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 89
    Par défaut
    Loin, très très loin d'être un expert du GridBagLayout, même en GUI tout court, mais deux cellules ne le ferait pas du coup? (une au dessus, une au dessous)

    La première contient le bouton 2, placé grâce à l'ancre PAGE_START, et la deuxième le bouton 5, avec l'ancre LAST_LINE_END.

    Ou alors une seule avec ces deux ancres?

    Sinon si jamais tu n'es pas déjà tombé dessus, j'ai trouvé ce tuto assez excellent: http://bbclone.developpez.com/fr/jav...page=page_2#Lb (merci à son auteur au passage )

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Par défaut
    Merci de vos réponses.

    Pour fr1man non, car ça prend en compte un certain nombre de pixel, et ça ne s'adapte donc pas à toutes les résolutions...

    Et pour yaraco non plus, car le composant utilise toujours toute la place disponible, sauf quand on passe par un Inset, sauf que ça passe par les pixels encore une fois...

    P-ê une solution en étendant la classe JPanel et rajouter une fonction pour ajouter une contrainte sans composant, je vais essayer de voir ça.

    Xram3d


    EDIT : trouvé, ça marche, mais je n'ai pas le résultat attendu (les input ne se redimentionnent jamais comme ceux de l'image), je pense que ça vient des weightx / weighty que j'ai utilisé pour placer les élements, je vais essayer d'arranger ça.
    Pour ce qui est de la technique, il faut créer un JPanel et le rendre non opaque (setOpaque(false)).

    Si quelqu'un a une meilleur solution je suis preneur, j'ai peur que ça surcharge inutilement comme ça (même si tous les jpanels créé pour placer sont supprimé au changement de jpanel principale).

  5. #5
    Membre éprouvé Avatar de yaraco
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 89
    Par défaut
    Et pour yaraco non plus, car le composant utilise toujours toute la place disponible, sauf quand on passe par un Inset, sauf que ça passe par les pixels encore une fois...
    C'est pas parce que tu aurais réglé le fill du composant sur horizontal,vertical ou both? Ou alors une minimum size et prefered size bien trop importantes?

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Par défaut
    Exact, pour le redimensionnement automatique, pas d'autres solution je crois non ?
    Sans vouloir sortir du sujet, étant vraiment à la base de mon projet, je réfléchis beaucoup au language utilisé pour le client / serveur... à votre avis ça vaudrait le coup de passer en c# pour améliorer l'interface / faciliter l'intégration (en prenant en compte le fait que je devrais faire une interface pour le jeu en opengl ou directx, et mit à l'écart la portabilité du langage) ?

Discussions similaires

  1. Problème avec GridBagLayout dans JPanel
    Par caneman dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 19/12/2006, 23h32
  2. Réponses: 2
    Dernier message: 04/12/2006, 21h40
  3. probleme avec GridBagLayout
    Par moi89 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/05/2006, 13h03
  4. [Swing]Gestion du positionnement avec GridBagLayout
    Par yoshï dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 15/04/2006, 22h14
  5. Petit soucis avec GridBagLayout ...
    Par Mike888 dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 24/03/2006, 12h33

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