2009-04-15 10 views
1

J'utilise une JTextArea dans mon application Swing. Le JScrollPane entouré est ajouté à un JPanel en utilisant le gestionnaire GridBagLayout.JTextArea avec un comportement étrange lors du redimensionnement du JFrame

// Pseudo Code ---- 

JTextArea area = new JTextArea(); 
area.setRows(3); 

JScrollPane sp = new JScrollPane(area); 

JPanel p = new JPanel(new GridBagLayout()); 
p.add(sp, new GridBagConstraints(
      0, 0, 1, 1, 1, 0, WEST, HORIZONTAL, new Insets(4, 4, 4, 4), 0, 0)); 

// ---------------- 

Tout fonctionne très bien. Aucun problème jusqu'à ce que je vais redimensionner le JFrame. Ensuite, les deux JTextArea se réduira à une ligne. Cependant, il y a assez de place pour au moins l'un d'entre eux.

Pourquoi l'effondrement de l'élément à une ligne?
Est-ce que quelqu'un connaît une solution? Quelqu'un a-t-il une idée?

+0

les deux? Je ne peux en trouver qu'un dans votre code ... –

+0

Oui. Je viens de mettre un exemple à ce poste. Ce n'est pas mon vrai code. Cela peut ne pas être pertinent et je devrais l'enlever. –

Répondre

0

Si j'utilise un BorderLayout autour de mes éléments, cela fonctionne.
Pete, MrWiggles, Merci pour votre aide !!

2

Je crois que c'est parce que vous avez votre jeu de poids à 0 (6 argument au constructeur GridBagConstraints). Vous devrez augmenter ceci si vous voulez que votre composant croisse verticalement.

2

vous Assurez-vous également de définir la propriété « Souhaitée » sur vos années ScrollPane. J'ai eu un comportement étrange (panes/champs qui s'effondrent/disparaissent) lorsque les cadres et les panneaux sont redimensionnés lorsque cette propriété n'est pas définie.

0

J'ai récemment eu un problème similaire où j'avais deux JTextAreas avec différentes valeurs GridBagConstraint.weighty et les deux ont été définis sur GridBagConstraint.fill = BOTH. Quand je changerais le texte dans les JTextAreas, ils changeraient de taille (ce qui ne devrait pas se produire si les poids et les valeurs de remplissage sont définis). Assez bizarrement, tout ce que j'avais à faire était de définir une taille préférée aux JScrollPanes qui entouraient les JTexAreas. La dimension de taille préférée pourrait être n'importe quoi, car le "fill = BOTH" a causé l'ignorance de la taille préférée, mais il a fait quelque chose de magique pour résoudre mon problème.

Questions connexes