2010-10-18 7 views
0

J'ai un JPanel qui est titulaire d'un JScrollPane qui est titulaire d'un JPanel comme tel:JPanel dans JScrollPane dans JPanel ignorant wrap horizontal

masterPanel.add(buttonPanel, BorderLayout.NORTH); 
inner.setLayout(new BorderLayout()); 
inner.add(infoPanel, BorderLayout.NORTH); 
inner.add(writingPanel, BorderLayout.CENTER); 
beholder = new JScrollPane(inner); 

masterPanel.add(beholder, BorderLayout.CENTER); 

Je veux regardeur être un JScrollPane de telle sorte que le panneau de bouton affiche en tout temps tout en faisant défiler le spectateur (volet de défilement interne). Tout cela fonctionne très bien, mais le problème est que les panneaux à l'intérieur du spectateur ne sont pas en ligne. J'ai donc une longue ligne de texte dans infoPanel qui provoque un défilement horizontal très long et indésirable.

Si je change juste la dernière ligne pour ajouter interne au lieu de spectateur, cela fonctionne bien (s'enroule correctement), mais alors le panneau de bouton ne restera pas au sommet quand l'utilisateur défile vers le bas.

Je suis complètement coincé. Fondamentalement ma question est de savoir comment obtenir les panneaux à l'intérieur du JScrollPane à l'enveloppe de mot normalement.

Le problème est l'emballage horizontal. Même si je mets beholder.setPreferredSize() à une dimension x et y très basse, il ignorera complètement la dimension x même s'il semble obéir normalement à la dimension y.

+0

quel composant utilisez-vous pour afficher du texte dans le panneau d'information? –

+0

c'est juste un JPanel –

Répondre

0

Pour une raison quelconque, ce problème est résolu en appelant:

inner.setPreferredSize(inner.getPreferredSize()); 

Cela entraînera l'enveloppe de se produire.

0

Je pense que le Scrollable Panel va vous aider.

+0

Peut-être que je ne comprends pas comment l'utiliser, mais ça ne marche pas du tout. En fait, il étire le composant dans les deux sens maintenant –

+0

Avez-vous joué avec la démo? Vous pouvez contrôler l'étirement séparément pour vertical et horizontal. Peut-être que je ne comprends pas la question et que vous n'avez pas posté un SSCCE, donc je ne peux pas voir votre problème exact. – camickr