J'ai trois JLabels et trois JTextAreas. Je les ai dans borderlayout, au centre, mais je veux que chacun d'entre eux dans une ligne différente, ce n'est pas le cas et les dix premiers résultats de recherche dans Google pour les sauts de ligne java ne résolvent pas le problème. Comment puis-je faire un simple saut de ligne?<br>? n? un saut de ligne en Java
Répondre
S'il s'agit d'une application Swing, vous devez utiliser un layout manager pour positionner vos champs dans le conteneur.
Le saut de ligne n'aidera pas à placer des objets Swing; vous devez placer une mise en page sur un centre JPanel. C'est-à-dire que le centre de votre mise en page de bordure doit être un seul objet Swing, un JPanel, et vous devez le définir sur un style qui vous permet d'empiler chaque widget. GridLayout (6,1) peut le faire.
Essayez d'utiliser un GridLayout pour commencer:
panel.setLayout(new GridLayout(0,2));
// the order of added components is important
panel.add(labelA);
panel.add(textAreaA);
panel.add(labelB);
panel.add(textAreaB);
...
ne semble pas trop jolie, mais il vous permet de démarrer.
Si vous ne définissez pas LayoutManager sur un nouveau panneau, il utilisera un FlowLayout qui se comporte un peu comme la disposition HTML. Mais il n'existe pas de saut de ligne dans un FlowLayout. Il va juste mettre composant après composant jusqu'à ce qu'il atteigne la fin de l'espace disponible et ensuite commencer une nouvelle ligne.
Si vous souhaitez contrôler vos mises en page, n'utilisez pas FlowLayout.
gestionnaires de mise en page que vous voudrez peut-être apprendre à connaître sont:
- BorderLayout - très bon si vous voulez contenu redimensionnable
- GridLayout - simple, égale grille de largeur et la hauteur
- null - vous permet d'utiliser setBounds sur chaque composant pour obtenir des positions absolues
Il y a plus, mais ces trois devraient vous permettre de mettre en page 95% de vos panneaux.
Vous pouvez utiliser des gestionnaires de disposition tels que GridLayout ou GridBagLayout. Même si ce dernier n'est recommandé que pour le code généré par les générateurs d'interface graphique, je le préfère car il me donne le plus de flexibilité.
JPanel panel = new JPanel();
GridBagLayout layout = new GridBagLayout();
panel.setLayout(layout);
layout.add(label1, new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(area1, new GridBagConstraints(1, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(label2, new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(area2, new GridBagConstraints(1, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(label3, new GridBagConstraints(0, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
layout.add(area3, new GridBagConstraints(1, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
panel.add(label1);
panel.add(label2);
panel.add(label3);
panel.add(area1);
panel.add(area2);
panel.add(area3);
Bien sûr, cela semble butt-laid mais devrait vous aider à démarrer.
Vous pouvez aussi abuser d'un BorderLayout:
JPanel panel = new JPanel(new BorderLayout());
JPanel topRow = new JPanel();
panel.add(topRow, BorderLayout.PAGE_START);
topRow.add(label1);
topRow.add(area1);
JPanel middleRowBox = new JPanel(new BorderLayout());
panel.add(middleRowBox, BorderLayout.CENTER);
JPanel middleRow = new JPanel();
middleRowBox.add(middleRow, BorderLayout.PAGE_START);
middleRow.add(label2);
middleRow.add(area2);
JPanel bottomRowBox = new JPanel();
middleRowBox.add(bottomRowBox, BorderLayout.CENTER);
JPanel bottomRow = new JPanel();
bottomRowBox.add(bottomRow, BorderLayout.PAGE_START);
bottomRow.add(label3);
bottomRow.add(area3);
bottomRowBix.add(new JPanel(), BorderLayout.CENTER);
Après avoir construit BEAUCOUP de composants d'interface utilisateur, je n'utilise plus que GridBagLayout - oui c'est un peu plus de travail, mais vous pouvez être assuré que si vous faites les choses correctement, votre vue évoluera de manière appropriée. – aperkins
Après avoir construit BEAUCOUP de composants UI, nous n'utilisons plus GridBagLayout - oui, il vous offre de belles options de mise à l'échelle et d'alignement, mais vous ne pouvez rien faire avec certains panneaux avec des LayoutManagers plus simples et le refactoring peut être pénible . Et si vous faites quelque chose de mal, vous pouvez passer une heure à trouver un faux réglage singulier. – Stroboskop
- 1. Saut de ligne ASP - \ n?
- 2. En quoi consistent les variations de saut de ligne en C# et ASP.NET? (\ r \ n vs. \ n)
- 3. Capture de caractères de saut de ligne (saut de ligne, saut de ligne) dans une zone de texte
- 4. nl2br plus d'un saut de ligne
- 5. Définition du codage, saut de ligne, saut de ligne, à la fin de ligne (EOL) en PHP
- 6. Comment éviter un saut de ligne dans un élément en ligne?
- 7. Panneau avec retour à la ligne et saut de ligne dans Java Swing
- 8. MVC Preserve retour chariot - saut de ligne en html
- 9. comment faire saut de ligne de texte dans textarea flex
- 10. Obtenir un saut de ligne spécifique au système .net
- 11. chaîne de remplacement \ n ou <br/> avec en AS3
- 12. Comment insérer un saut de ligne dans une cellule de feuille de calcul OPENXML?
- 13. as3 composant textarea: interdire à l'utilisateur d'entrer un saut de ligne
- 14. Affichage d'informations à partir de MATLAB sans saut de ligne
- 15. Visual Studio 2008 - saut au raccourci du numéro de ligne
- 16. ie7 insère saut de ligne après/avant étiquette de forme
- 17. Impression ligne par ligne en Java
- 18. Lire saut de ligne dans une chaîne avec JavaScript
- 19. comment envoyer puis lire \ n en utilisant SocketChannel en Java
- 20. MSXML et la normalisation de saut de ligne (?) De la propriété document.xml
- 21. ajoutant saut de ligne au champ mémo Type
- 22. Regex qui correspond à une nouvelle ligne (\ n) en C#
- 23. passer \ n en javascript
- 24. Comment puis-je passer formated (\ n \ t) du texte à une ligne de commande java
- 25. Comment puis-je écrire 'n << = 1' (Python) en PHP?
- 26. Obtention de la chaîne la plus longue (se terminant par un saut de ligne) dans une Textarea dans Flex
- 27. Comment trier un MultiMap <k,v> en java?
- 28. astyle formatage ligne multiple <<
- 29. Comment puis-je traiter un fichier binaire d'enregistrements de longueur fixe sans saut de ligne?
- 30. Comment ajouter un saut de ligne à une TextBox de formulaires Windows?
pouvez vous montrer comment vous ajoutez vos composants à vos JPanel? – akf
mainPanel.add (aLabel); mainPanel.add (unScroller); mainPanel.add (bLabel); mainPanel.add (bScroller); mainPanel.add (cLabel); mainPanel.add (cScroller); –
Cela a fonctionné comme ceci: mainPanel.setLayout (new BoxLayout (mainPanel, BoxLayout.PAGE_AXIS)); –