2010-07-19 3 views
0

Je construis une grille remplie d'étiquettes. L'un d'entre eux contient html-text et devrait être redimensionné au maximum et défilement. J'ai trouvé comment ajouter un JScrollPane mais il reste une hauteur de ligne, je ne trouve pas comment le redimensionner même quand je lui donne une taille de 400x400 ...ajouter un jpanel déroulant à une grille de construction

La suppression de getViewport() donne le même résultat.

JPanel grid = new JPanel(new GridLayout(1,2)); 

// first cell of the grid 
grid.add(new JLabel("title")); 

// second cell of the grid, this should be the scrollable one 
JScrollPane scroll = new JScrollPane(); 
scroll.getViewport().setSize(400, 400); 
scroll.getViewport().add(new JLabel("<html>long<br>html<br>text</html>")); 
grid.add(scrollVersion, BorderLayout.CENTER); 

Des idées?

Merci beaucoup ...

+0

Je suppose que vous avez essayé 'setMinimumSize'? – sje397

Répondre

1

GridLayout ne respecte pas la taille préférée des composants qu'il dispose. Il vise à rendre toutes les cellules de la même taille. Une alternative est d'utiliser GridBagLayout, mais je recommanderais personnellement ZoneLayout qui (à mon avis) est plus simple, tout aussi puissant et beaucoup plus intuitif. Avec le cheatsheet vous ne pouvez pas vous tromper. En remarque, BorderLayout.CENTER est une contrainte utilisée pour BorderLayout et n'est pas compatible avec GridLayout. Lorsque des composants sont ajoutés au propriétaire d'un GridLayout, vous n'avez pas besoin de fournir de contraintes. Les composants sont ajoutés de gauche à droite à partir de la cellule du coin supérieur gauche à l'aide de GridLayout.

0

Remplacez votre GridLayout avec un GridBagLayout. Avec le bon ensemble de contraintes, cela devrait fonctionner comme un charme. Et évidemment, jetez un oeil à some examples, comme GridBagLayout semble assez complexe, mais est plutôt simple avec quelques exemples.

0

Toutes les cellules du GridLayout sont conçues pour avoir la même taille, donc si vous voulez un être plus grand que teh othes vous devez utiliser un autre LayoutManager, comme le GridBagLayout qui Riduel Suggest.

Aussi, si votre JLabel va avoir plus d'une ligne je vous suggère de le remplacer par un JTextPane non modifiable o JTextArea

Questions connexes