2009-01-10 6 views
55

Création d'une application graphique en Java/Swing. Je suis surtout habitué à «peindre» des interfaces graphiques du côté Windows avec des outils comme VB (ou pour être plus précis, Gupta SQLWindows ... je me demande combien de personnes savent ce que c'est ;-)).Existe-t-il un équivalent "Group Box" dans Java Swing?

Je ne peux pas trouver un équivalent d'une boîte groupe Swing ...

Avec une zone de groupe, vous avez une boîte carrée (généralement avec un titre) autour d'un couple de widgets connexes. Un exemple est une boîte de groupe autour de quelques boutons radio (avec le titre expliquant les boutons radio, par exemple Group Box intitulé "Sex" avec les boutons radio "Male" et "Female").

J'ai cherché un peu ... le seul moyen que j'ai trouvé était d'ajouter un sous-volet, de définir la bordure sur le sous-volet puis d'ajouter tous les widgets dans le "groupe" au sous-volet vitre. Y a-t-il une façon plus élégante de faire cela?

+0

Vous pourriez peut-être expliquer ce qu'est une boîte de groupe. – Geo

+0

Je pense qu'il veut dire le groupe de contrôle que vous voyez dans de nombreuses boîtes de dialogue, où vous avez un carré autour d'un tas de widgets tels que les boutons radio, par exemple. – Uri

Répondre

110

Créez un JPanel et ajoutez-y vos radiobuttons. Ne pas oublier de mettre la disposition de JPanel à quelque chose de approprié.

appellent alors panel.setBorder(BorderFactory.createTitledBorder(name));

1

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

Dans VB, vous avez un widget de groupe, qui est essentiellement un panneau + une bordure. Dans Swing, vous avez un JPanel qui est le widget conteneur, et vous créez et définissez un objet frontière sur celui-ci seulement si vous en avez besoin. On peut argumenter que d'une manière qui est plus élégante puisque vous ne payez pas pour quelque chose que vous n'utilisez pas (par exemple, frontière)

-1

Je réponds basé sur le commentaire d'Uri qui a expliqué ce que l'OP voulait dire par Group Box Uri: Je pense qu'il veut dire le groupe de contrôle que vous voyez dans beaucoup de boîtes de dialogue, où vous avez un carré autour d'un tas 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, de sorte que vous n'avez pas besoin d'un second panneau.

+0

Je veux avoir une bordure autour d'un certain nombre de composants JComponents .. En outre, avoir un seul élément dans une zone de groupe est généralement une mauvaise pratique. – Thorsten

+0

Vous pouvez ajouter plusieurs composants dans un JPanel. – Geo

+0

Je sais .. J'ai probablement mal compris votre réponse. – Thorsten

3

Une boîte de groupe est juste un ensemble de « widgets » regroupées de manière logique. Ceci dans le monde 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 de la 'trame' VB6.

Voila. Vous avez votre boîte de groupe.

6

D'autres ont déjà parlé de JPanel et de l'utilisation d'un TitledBorder, ça va. Cependant, lorsque vous jouez avec Swing LayoutManagers, vous pouvez trouver ennuyeux que les composants de différents JPanels ne puissent pas s'aligner correctement (chaque panneau a son propre LayoutManager). Pour cette raison, il est conseillé de vérifier ("JGoodies" sur le Web pour plus de détails) dans les interfaces graphiques Swing NE PAS utiliser TitledBorders mais plutôt séparer les groupes de composants dans un JPanel par un JLabel suivi d'un JSeparator horizontal.

Réf. "First Aid for Swing"

+1

FYI - votre lien de référence est cassé. –

+0

Merci pour la remarque, le site Web original a été changé l'année dernière et je n'étais pas au courant. Maintenant, je viens de réparer le lien. – jfpoilpret

+1

Existe-t-il des instructions spécifiques à Oracle ou à un système qui prennent en charge cette instruction? Cette étiquette + séparateur devrait être préféré à la boxe de groupe? JGoodies est juste * une * compagnie implémentant Java. – Kissaki

2

Voici une citation du javadocs JRadioButton depuis que vous avez mis en place des 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 objet ButtonGroup pour créer un groupe de boutons dans lequel un seul bouton à la fois peut être sélectionné. (Créez un objet ButtonGroup et utilisez sa méthode add pour inclure les objets JRadioButton dans le groupe.)

Remarque: L'objet ButtonGroup est un regroupement logique et non un groupement physique. Pour créer un panneau de boutons, vous devez toujours créer un JPanel ou un objet-conteneur similaire et lui ajouter une bordure pour le définir à partir des composants environnants.

+0

Merci, mais comme vous le faites remarquer correctement, mon objectif principal était l'aspect "visuel". – Thorsten