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 :

GridBagLayout et champs trop petits


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 51
    Par défaut GridBagLayout et champs trop petits
    Bonjour,

    Je souhaite faire une petite fenêtre de saisie, je me suis intéressé à gridBadLayout et est lu le tutoriel sur ce site qui est très bien.

    Mais le problème c'est que mes boutons et mes JTextFields ont une taille très petite pour ne pas dire inexistante et je ne sais pas comment corriger ce problème.

    Voici mon 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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package museumsimulator;
     
    import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
     
    /**
     *
     * @author carlino
     */
    public class FrameImport {
     
        public FrameImport() {
     
            JFrame frame = new JFrame("Map import");
            //Initialization of container
            frame.setLayout(new GridBagLayout());
     
            //Initialization of components
            JLabel connection = new JLabel("Map connection");
            JLabel distance = new JLabel("Map distance");
     
            JTextField connection_pane = new JTextField();
            JTextField distance_pane = new JTextField();
     
            JButton connection_button = new JButton("Select");
            connection_button.setPreferredSize(new Dimension (25,6));
            JButton distance_button = new JButton("Select");
            distance_button.setPreferredSize(connection_button.getPreferredSize());
            JButton submit_button = new JButton("Submit");
            submit_button.setPreferredSize(connection_button.getPreferredSize());
     
            //Labels insertion
            GridBagConstraints label = new GridBagConstraints();
            label.gridx = 1; 
            label.gridy = 2;
            label.gridwidth = 1;
            label.insets = new Insets(10,10,10,10);
            label.anchor = GridBagConstraints.BASELINE_LEADING;
            frame.add(connection, label);
            label.gridy = 4;
            frame.add(distance, label);
     
            //TextPane creation
            GridBagConstraints textpane = new GridBagConstraints();
            textpane.gridx = 2;
            textpane.gridy = 2;
            textpane.gridwidth = GridBagConstraints.RELATIVE;
            textpane.insets = new Insets(10,10,10,10);
            textpane.anchor = GridBagConstraints.BASELINE_LEADING;
            frame.add(connection_pane, textpane);
            textpane.gridy = 4;
            frame.add(distance_pane, textpane);
     
            //Button select creation 
            GridBagConstraints select = new GridBagConstraints();
            select.gridx = 3;
            select.gridy = 2;
            select.gridwidth = GridBagConstraints.REMAINDER;
            select.insets = new Insets(10,10,10,10);
            select.anchor = GridBagConstraints.BASELINE_LEADING;
            frame.add(connection_button, select);
            select.gridy = 4;
            frame.add(distance_button, select);
     
            //Button submit creation
            GridBagConstraints submit = new GridBagConstraints();
            submit.gridy = 6;
            submit.insets = new Insets(10,10,10,10);
            submit.anchor = GridBagConstraints.BASELINE_LEADING;
            frame.add(submit_button, submit);
     
            //Creation of the frame
            frame.setMinimumSize(new Dimension(600,500));
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
     
        }
     
        public static void main (String args[]) {
            FrameImport frameImport = new FrameImport();
        }
     
    }
    Si quelqu'un à une idée ^^. Merci d'avance !

  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 peux d'un côté utiliser les attributs fill et weightx/weighty (de GridBagConstraints), pour déterminer comment le composant associé remplit l'espace de la grille. Pour un JTextField, par ailleurs, tu peux indiquer la taille en caractères qu'il doit prendre quelque soit la valeur actuelle saisie, par la méthode setColumns().
    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.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 51
    Par défaut
    Ah d'accord, merci ! Et une autre question pourquoi mes composants sont-ils, de base, ancré au milieu de ma fenêtre ? N'y a t-il pas moyen de les ancrer en haut à gauche ?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 51
    Par défaut
    C'est bon j'ai trouvé il suffit d'utiliser le "poids" des objets à l'aide de gridBagConstraints.weightx et gridBagConstraints.weighty merci encore de ton aide joel !

  5. #5
    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
    En fait la grille définie par le GridBagLayout occupe tout l'espace qu'on lui donne (celui de la JFrame en l'occurence) : mais tu ne places pas tes composants dans la première ligne (gridy=0) ou la première colonne (gridx=0). En fonction des différentes contraintes, le layout doit estimer que ces lignes ou colonnes, vides, prennent un certain espace qui te font penser que tes composants sont centrés : en fait, c'est simplement qu'il y a des lignes et des colonnes vides de composants, mais pas de taille null. En occupant les bonnes lignes et bonnes colonnes, avec les bonnes contraintes, tes composants seront casés en haut à gauche, avec un espace en bas et à droite, si ta fenêtre est trop grande, et éventuellement, de grand espaces entre les composants (en particulier verticalement).

    En jouant sur les poids, on peut s'arranger pour que ces lignes ou colonnes non occupées soient de tailles nulles, en effet.
    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.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 51
    Par défaut
    Oui j'ai vu que j'avais fait cette erreur là aussi du coup j'ai joué avec le poids des composant et remis à zéro et c'est niquel.

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

Discussions similaires

  1. [AC-2007] Erreur 3163 "Champ trop petit"
    Par Nephyline dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/03/2012, 12h33
  2. Réponses: 11
    Dernier message: 23/11/2011, 18h18
  3. [AC-2007] Erreur Champ trop petit
    Par Aladin_23 dans le forum VBA Access
    Réponses: 6
    Dernier message: 31/10/2010, 10h14
  4. Taille de champ trop petit
    Par imsse dans le forum VBA Access
    Réponses: 15
    Dernier message: 19/06/2008, 10h52
  5. "Champ trop petit pour quantité de données"
    Par Miss Ti dans le forum Access
    Réponses: 9
    Dernier message: 25/07/2006, 20h56

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