Existe-t-il un équivalent «Group Box» dans Java Swing?

Essayer de construire une application graphique en Java / Swing. Je suis surtout habitué à “peindre” des interfaces graphiques côté Windows avec des outils comme VB (ou plus précisément, Gupta SQLWindows … je me demande combien de personnes savent ce que c’est ;-)).

Je ne trouve pas l’équivalent d’une boîte de groupe dans Swing …

Avec une boîte de groupe, vous avez une boîte carrée (généralement avec un titre) autour de quelques widgets associés. Un exemple est une boîte de groupe autour de quelques boutons radio (avec le titre expliquant ce que sont les boutons radio, par exemple la boîte de groupe intitulée “Sex” avec les boutons radio “Male” et “Female”).

J’ai cherché un peu … la seule façon que j’ai trouvée était d’append un sous-volet, de définir la bordure du sous-volet, puis d’append tous les widgets du “groupe” au sous-volet. Y a-t-il une manière plus élégante de le faire?

Créez un JPanel et ajoutez-y vos boutons radio. N’oubliez pas de définir la mise en page du JPanel sur quelque chose de approprié.

Appelez ensuite panel.setBorder(BorderFactory.createTitledBorder(name));

D’autres ont déjà parlé de JPanel et ont utilisé un TitledBorder, c’est bien.

Cependant, lorsque vous jouez avec Swing LayoutManagers, il peut être gênant que les composants de différents JPanels ne puissent pas s’aligner correctement (chaque panneau possède son propre LayoutManager).

Pour cette raison, c’est une bonne pratique (cochez “JGoodies” sur le Web pour plus de détails) dans les interfaces graphiques Swing pour ne PAS utiliser TitledBorders mais séparer des groupes de composants dans un JPanel par un JLabel suivi d’un JSeparator horizontal.

Réf. ” Premiers secours pour balancer ”

Une zone de groupe n’est qu’un ensemble de «widgets regroupés de manière logique». Ceci dans le monde du swing est un JPanel .

Ajoutez vos widgets à un JPanel .

Définissez son type de bordure sur “Bordure titrée” et donnez le titre, identique au nom du “cadre” VB6.

Voila. Vous avez votre boîte de groupe.

Voici une citation des javadocs de JRadioButton depuis que vous avez activé les boutons radio.

Une implémentation d’un bouton radio – un élément qui peut être sélectionné ou désélectionné et qui affiche son état à l’utilisateur. Utilisé avec un object ButtonGroup pour créer un groupe de boutons dans lequel un seul bouton à la fois peut être sélectionné. (Créez un object ButtonGroup et utilisez sa méthode add pour inclure les objects JRadioButton dans le groupe.)

Remarque: L’object ButtonGroup est un regroupement logique et non un regroupement physique. Pour créer un panneau de boutons, vous devez toujours créer un object-JPanel ou un object-conteneur similaire et y append une bordure pour la séparer des composants environnants.

Pas AFAIK, du moins pas avec les widgets de swing standard.

Dans VB, vous avez un widget de groupe, qui est essentiellement un panel + border.

Dans Swing, vous avez un JPanel qui est le widget conteneur, et vous créez et définissez un object frontière uniquement si vous en avez besoin. On peut argumenter cela d’une manière plus élégante puisque vous ne payez pas pour quelque chose que vous n’utilisez pas (par exemple, frontière)

Je réponds en me basant sur le commentaire d’Uri qui explique ce que signifiait l’OP par Group Box :

Uri: Je pense que cela signifie le groupe de contrôle que vous voyez dans de nombreuses boîtes de dialog, où vous avez un carré autour d’un groupe de widgets tels que les boutons radio, par exemple.

Pour autant que je sache, chaque JComponent peut définir une bordure pour lui-même, vous n’avez donc pas besoin d’un deuxième panneau.