Swing GroupLayout: Redimensionnement et de limiter les tailles de composants

Je suis en utilisant GroupLayout pour gérer les composants généré dynamiquement des données de formes d'entrée. La mise en page est plus ou moins comme ceci:

*-----------------------------------------------*
| label A     |   field A                       | 
| label B     |   field B                       |
| label C     |   field C                       |
*-----------------------------------------------*

Je suis à l'aide de 2 groupes parallèles pour la mise en page horizontale, et un seul séquentielle groupe pour la mise en page verticale. Pour la plupart, tout fonctionne très bien.

Je veux limiter la largeur maximale de l'étiquette (qui sont des instances de JLabel) à 1/3 de la largeur du parent JFrame. Si le JFrame a une taille fixe, ce serait trivial, mais j'ai à traiter avec elle en cours de redimensionnement.

Je vais chercher des ComponentListener.componentResized() les événements de la JFrame mais je suis un peu coincé sur ce qu'il faut faire une fois que je reçois un tel événement.

J'ai essayé cette approche sans un peu de chance:

public void componentResized(ComponentEvent e) {
    int maxW = parentFrame.getWidth() / 3;
    for (JLabel l : labels) {
        l.setMaximumSize( //have also tried setSize() and setPreferredSize()
            new Dimension(
                Math.min(l.getSize().width, maxW),
                l.getMaximumSize().height));
    }
    groupLayout.invalidateLayout(getContentSpace());
}

quelqu'un Peut-il suggérer une manière de limiter la largeur des étiquettes qui fonctionne?

Je pourrais probablement reconstruire la mise en page à partir de zéro à chaque fois, mais je me sens comme il devrait y avoir un moyen plus simple.

ne pas setXXSize jamais: stackoverflow.com/questions/7229226/...
Est-il une raison pour une étiquette à croître plus grande que la taille de la plus grande étiquette?
Non il n'y en a pas. Je suis désireux de fixer une limite supérieure à la largeur des étiquettes, ne sont pas une limite minimale. Avez édité la question à clarifier cela.

OriginalL'auteur vaughandroid | 2011-12-13