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 :

BoxLayout et JTextArea


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é
    Profil pro
    Inscrit en
    Août 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 98
    Par défaut BoxLayout et JTextArea
    Bonjour,

    J'ai une JFrame avec comme gestionnaire un BoxLayout (axe Y).
    Dedans j'ajoute différents éléments, JButton, JLabel, et un JTextArea de taille 6 lignes 20 colonnes.

    Je m'attendais à ce que le JTextArea ai une largeur de 20 colonnes puisque le BoxLayout respecte les dimensions préférées des objets que l'on met dedans, hors il n'en ai rien puisque, si les bouttons ont bien une largeur limitée, les JTextArea occuppent eux toute la largeur et on un nombre de colonnes proportionnelles à la largeur, le même se pose pour la hauteur et les 6 lignes.

    La question est donc pourquoi (je ne veux pas une recette de cuisine) mais je voudrais que l'on m'explique.

    Je précise que je débute en Java et Swing et il se peut donc que l'erreur soit très grossière !!!

    Je vous met 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
     
    import javax.swing.*;
    import java.awt.*;
     
    public class EditeurCartes {
     
    	public void construireIhm() {
    		/* La fenetre principale */
    		JFrame cadre=new JFrame("Editeur de cartes");
    		cadre.setSize(800,600);
    		cadre.getContentPane().setLayout(new BoxLayout(cadre.getContentPane(),BoxLayout.Y_AXIS));
     
    		/* Les text Areas representant les 2 faces de la carte */
    		JTextArea carteQuestion = new JTextArea(6,20);
    		JTextArea carteReponse = new JTextArea(6,20);
     
    		carteQuestion.setLineWrap(true);
    		carteReponse.setLineWrap(true);
     
    		/* Les ascenseur pour les text areas */
    		JScrollPane ascenseurQuestion=new JScrollPane(carteQuestion);
    		ascenseurQuestion.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    		ascenseurQuestion.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    		JScrollPane ascenseurReponse=new JScrollPane(carteReponse);
     
    		/* Les labels Question :  et Reponse : */
    		JLabel question = new JLabel("Question : ");
    		JLabel reponse = new JLabel("Reponse : ");
     
    		/* Le bouton carte suivante */
    		JButton boutton = new JButton("Carte suivante");
     
    		/* Ajout de tous les composant dans la fenetre principale */
     
    		cadre.getContentPane().add(question);
    		cadre.getContentPane().add(ascenseurQuestion);
    		cadre.getContentPane().add(reponse);
    		cadre.getContentPane().add(ascenseurReponse);
    		cadre.getContentPane().add(boutton);
     
    		cadre.setVisible(true);
     
    	}
     
    	public static void main(String[] args) {
    		EditeurCartes editeur = new EditeurCartes();
    		editeur.construireIhm();
    	}
     
    }
    Cordialement

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 98
    Par défaut
    Bon ben c'est plus compliqué et je pense avoir à peu près capté le résultat que j'ai.
    Toutefois juste une petite question pourquoi mon boutton n'occupe pas la largeur du plus large des mes composants (le JTextArea)

    Mon bouquin me disait que le BoxLayout respectait la taille des composants mais après lecture de la FAQ la stratégie de mise en forme est tout à fait différente de ce que je croyais.

    La question qui vient donc maintenant c'est quel Layout utiliser.
    GridBagLayout (mais il parrait que ca risque de piquer!) ?
    Cordialement

  3. #3
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Peut être ton bouton a-t-il atteint sa taille max ?

    Pour le layout, il faudrait que tu nous dises quelle dispositif tu veux obtenir !

    Perso j'utilise Matisse avec Netbeans ; si tu as compris le fonctionnement des layouts, je te le recommande chaudement.

    Pour d'autres layouts : Référencement des différents layouts, et tu en choisis un.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut
    Il faut que tu fixe déja le setMaximumSize et le setMinimumSize de tes textareas.

    et comme le boxlayout a la base il remplit une ligne ou une colonne complète, le maximumsize ne devrait pas etre suffisant donc il faudra que tu rajoutes des trucs de ce style :

    Dans ton cas pour un boxlayout vertical :

    Box.createGlue() : ca doit normalement te mettre tous les composants qui son apres c'truc là totalement en bas.

    Box.createVerticalStrut(int height) : ca te fera un espace entre deux composants.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 98
    Par défaut
    Merci de vos réponses :

    Oui voila c'est ce que j'avais conclus j'ai fixe le maximum size de mes TextArea.
    De plus j'ai également fixé l'alignement sinon les TextArea bougent lorsque l'on écrit du texte dedans.

    Malheureusement cela fonctionne lorsque l'on fixe l'alignement à LEFT mais lorsque l'on met CENTER la c'est la berezina, même si les textArea ne bougent plus le centrage devient tout pourri.

    Pour griffffftane (pas sur du nombre de t ) oui je pense que pour le bouton c'est ça.

    Ce que je veux faire maintenant (comme j'ai réussi à faire un certain nombre de choses j'ai rajouté des conditions )

    Pouvoir faire plusieurs TextArea l'un sous l'autre dans une frame.
    - N'occupant pas toute la Frame en horizontal et centrés par rapport à la frame.
    - Ayant un nombre de colonnes et lignes différents.
    - Gardant lors d'un agrandissement le même ratio d'occupation de la frame.
    - Ne bougeant pas lorsque l'on écrit dans le textArea.


    Des labels et boutons centrés également par rapport à la frame (et donc par rapport aux text aréas)

    Pas la peine de me mettre la solution je voudrai juste savoir si c'est possible ou non avec un BoxLayout (je ne pense pas) ou sinon quel Layout (des bibliotheques integrees à Swing) utiliser...je dirai GridBagLayout mais je connais pas encore ce Layout (avant de me lancer dans la compréhension de ce layout qui risque de me prendre on va dire un certain temps pour rester positif ! je voudrai savoir si il est vraiement puissant )

    Autre question lorsque l'on construit le textArea en lui passant le nombre de ligne et colonnes dans le constructeur le nombre de colonnes correspond t-il aux nombres de lettres qu'on peut mettre dans une ligne ?

Discussions similaires

  1. [swing]Centrage du texte d'un JTextArea
    Par Lezoul dans le forum Composants
    Réponses: 3
    Dernier message: 15/06/2004, 16h07
  2. Insérer de texte sans un JtextArea
    Par OxN dans le forum Débuter
    Réponses: 7
    Dernier message: 11/06/2004, 13h16
  3. [JTextArea] Soulignage de parentheses
    Par deedji dans le forum Composants
    Réponses: 6
    Dernier message: 04/06/2004, 15h33
  4. [JTextArea] Empecher l'ecriture
    Par Longrais dans le forum Composants
    Réponses: 6
    Dernier message: 13/05/2004, 15h10
  5. [JTextArea]changer dynamiquement le nombre de colonnes
    Par MrDuChnok dans le forum Composants
    Réponses: 9
    Dernier message: 27/04/2004, 14h31

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