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

Composants Java Discussion :

Problème de placement d'un JTextField


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Par défaut Problème de placement d'un JTextField
    Bonjour voilà je suis en train de créer une bataille navale, j'ai créer les deux grilles mais j'ai un problème concernant le placement de 2 objets de type JTextField je n'arrive pas a les placer ou je veux dans le panneau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    super (nom);
    		setBounds(300,200,largeur,hauteur);
    		Container contenu = getContentPane();
    		panneau = new PanDes();  //instancie l'objet panneau avec PanDes
    		contenu.add(panneau);  //ajoute le composant panneau a la fenetre
     
    		saisie = new JTextField (10);
    		panneau.add(saisie);
    		saisie2 = new JTextField(10);
    		panneau.add(saisie2);
    Dans la classe PanDes il y a le code contenant le dessin des 2 grilles.
    Avec le code ci-dessus il place bien les 2 JTextField mais je ne vois pas comment les placer la ou je voudrais en entrant les coordonnées en pixels par exemple car je voudrais les placer sous les 2 grilles mais la il sont placer au dessus cela doit être un placement par défaut je suppose. J'ai essayer avec la méthode setBOunds appliqué sur les JTextField mais ca ne marche pas et les différents gestionnaire de mise en forme ne propose pas un placement "libre" des composants a moins qu'il y en est un que je connais pas.
    Voici un image du projet bataille navale ca peut aider :
    Nom : bat nav.JPG
Affichages : 512
Taille : 38,2 Ko
    Merci pour votre aide.

  2. #2
    Membre expérimenté Avatar de welcome_59
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 203
    Par défaut
    Tu utilises quoi comme layout?

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    salut

    De mémoire, effectivement le layout de base dispose les éléments graphique au centre en fait.
    si tu veux les placer où tu veux, annule le layout via la méthode setLayout(null)
    ensuite utilise la méthode setBound() pour placer tes éléments

    dis nous ce qu'il en ait

    Matt

  4. #4
    Membre éclairé Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Par défaut
    En fait je n'utilise pas de layout mais dans ce cas dois-je malgré tout mettre la méthode setLayout(null)?
    Merci

  5. #5
    Membre confirmé Avatar de Sp4ce
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Par défaut
    si tu n'as pas spécifier de Layout, tu utilises celui par défaut qui est le FlowLayout et qui ne fait pas des choses super. Je te conseille d'utiliser un GridBagLayout, c'est un peu compliqué à mettre en oeuvre si tu ne sais pas ce qu'est un layout, mais après c'est très puissant pour faire ce que tu veux.

    Par contre je ne connnais pas la méthode qui consiste a supprimer le layout, alors à toi de voir.

    en tout cas si tu veux utiliser un GridBagLayout, il faut faire comme ça :


    prenons l'exemple du cas ou tu veux placer deux JTextField dans un JPanel (nommé jPanel)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //initialisation du layout et des contraintes (constraints) qui vont te permettre de placer tes éléments
    GridBagConstraints gridBagConstraints;
    jPanel.setLayout(new GridBagLayout());
    ensuite tu places un JTextField

    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
     
    // init des nouvelles contraintes pour ton élément à placer
    gridBagConstraints = new GridBagConstraints();
    // premiere case en x
    gridBagConstraints.gridx = 0;
    // premiere case en y
    gridBagConstraints.gridy = 0;
    // ces deux contraintes sont plus dures à comprendre, elles indiquent une pondération de l'utilisation de l'espace qui reste autour des cases
    gridBagConstraints.weightx = 0.5;
    gridBagConstraints.weighty = 1;
    // met l'element au nord, mais bon a changer suivant ton cas
    // CENTER, ça peut le faire aussi
    gridBagConstraints.anchor = GridBagConstraints.NORTH;
    // ajoute l'élément à jPanel avec les contraintes
    jPanel.add(new JTextField(10),gridBagConstraints);
    ensuite le deuxième

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    gridBagConstraints = new GridBagConstraints();
    // seul changement, deuxième case en x
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 0;
    // pas besoin de spécifier la pondération en y, elle est imposée par la première case de la ligne dans notre cas
    gridBagConstraints.weightx = 0.5;
    gridBagConstraints.anchor = GridBagConstraints.NORTH;
    jPanel.add(new JTextField(10),gridBagConstraints);
    voila, en tout cas si tu veux plus de détails sur le GridBagLayout et surtout sur GridBagContraints qui permet de faire plein de placement comment tu as envie va sur l'API.

    [edit] pour bien comprendre les weight, il faut faire des exemples. SI par exemple tu veux faire trois colonnes avec la première qui fera deux fois la taille des autres. tu mets comme weightx respectivement 0.5 puis 0.25 et 0.25[/edit]

  6. #6
    Membre éclairé Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Par défaut
    Pour placer 2 JTextField respectivement en bas de chaque grille il n'y a pas une solution plus simple parce que j'ai mal a comprendre le système de placement avec le GridLayout on ne peut pas tout simplement utiliser un setBounds sur les JTextField.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/01/2007, 10h09
  2. problème de placement d'un lien
    Par wegreen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 27/09/2006, 12h58
  3. probléme de placement colonne droite css
    Par speedylol dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/07/2006, 09h37
  4. [Swing] Problème de placement et de taille des composants
    Par CrazySeb dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/04/2006, 14h56
  5. problème de placement avec IE
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 19/12/2005, 23h46

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