2009-11-18 7 views
0

J'essaie de rendre certains composants d'un JSrollPane irrécupérables, car le contenu interne peut croître de manière dynamique et je dois l'empêcher de croître sur une taille prédéfinie.Comment ne pas redimensionner les composants swing

Mon approche à ce jour est celui-ci:

scrollPane(constraints:BL.CENTER, size:[500,200], maximumSize:[500,200]){ 
    panel(background:Color.WHITE, border:BF.createTitledBorder('Results')) { 
     gridBagLayout() 

     f0 = label(constraints:gbc(gridx:0, gridy:0)) 
     fk = label(constraints:gbc(gridx:0, gridy:1)) 

    } 
} 

(c'est routinier mais les objets sont les mêmes que Swing (par exemple label = JLabel, panneau = JPanel ..)

Et ça marche, mais lors de l'insertion dans l'étiquette d'un texte long par exemple 2000px, le premier appel à repeindre dans le cadre qui contient ce scrollpane fait redimensionner l'ensemble du scrollpane (jusqu'à ce que la barre de défilement disparaisse)

Je dois forcer pour rester à la taille que je veux!

Ai-je raté quelque chose? Ou est-ce un bug de groovy? (Cela semble étrange parce que cela devrait juste faire correspondre les appels aux composants de swing normaux)

Répondre

1

Pourquoi ne pas simplement emballer le texte? Quoi qu'il en soit, les composants Swing ont setMaximumSize méthode (Dimension)

+0

parce qu'ils sont des équations et les envelopper ne serait pas bien .. je aussi permis de montrer une image au lieu de texte dans les étiquettes de sorte qu'il ne fonctionnerait pas. J'ai déjà utilisé maximumSize pour le scrollpane :( – Jack

+0

En les recadrant ne serait pas sympa non plus, et si vous définissiez maximumSize de l'étiquette? – Dmitry

+2

Essayez d'ailleurs de définir le paramètre preferredSize de la fenêtre de défilement Voir http://bugs.sun.com /bugdatabase/view_bug.do?bug_id=4916048 – Dmitry

Questions connexes