L'ajout d'un groupe de cases à cocher pour un menu java
Im essayant d'ajouter un checkboxgroup à mon menu, mais reçois un "Impossible de trouver le symbole d'erreur".
MenuBar mb = new MenuBar();
Menu file = new Menu("File");
Menu colorM = new Menu("Color");
MenuItem quitM = new MenuItem("Quit", new MenuShortcut(KeyEvent.VK_Q));
CheckboxGroup cbg = new CheckboxGroup();
Checkbox cb1 = new Checkbox("Black",cbg,true);
Checkbox cb2 = new Checkbox("Red",cbg,false);
Checkbox cb3 = new Checkbox("Blue",cbg,false);
Checkbox cb4 = new Checkbox("Green",cbg,false);
Ensuite dans mon initialisation j'ai
chatF.setMenuBar(mb);
mb.add(file);
mb.add(colorM);
file.add(quitM);
colorM.add(cbg);
J'ai essayé d'ajouter un MenuItem et de mettre le gbc là, mais même problème
- Si je commente la colorM.ajouter(cbg) en ligne tout se compile et s'exécute parfaitement. Le seul code que j'ai dans le programme pour le moment est la configuration de l'INTERFACE utilisateur ainsi que l'ajout et la suppression de la des auditeurs alors j'ai pensé que le code pour la configuration des boutons, des étiquettes, etc n'était pas nécessaire.
InformationsquelleAutor user1515742 | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
CheckboxGroup
n'est pas unComponent
(ou, plus précisément, unMenuItem
), de sorte que vous ne pouvez pas l'ajouter au menu. Au lieu de cela, vous pouvez créer unCheckboxMenuItem
, mais je pense queCheckboxGroup
fonctionne uniquement avec les instances deCheckbox
de sorte que vous aurez à écrire votre propre code pour l'application unique de sélection.Si le Swing est une option, vous pouvez à la place utiliser
JRadioButtonMenuItem
etButtonGroup
:Vous ne pouvez pas ajouter un
CheckboxGroup
à un Menu... vous ne pouvez ajouterMenuItem
instances. Vous pouvez ajouter unCheckboxMenuItem
, mais cela ne veut pas comprendreCheckboxGroup
soit.Si vous avez besoin de changer la
CheckBox
s àCheckboxMenuItem
s, les ajouter individuellement dans le menu, faites rouler votre propreCheckboxMenuItemGroup
classe et de l'utiliser pour lier leCheckboxMenuItem
s ensemble.Quelque chose comme la suivante devrait fonctionner:
Cela devrait fonctionner car
ItemListener
s n'est pas appelée lorsque le code appelleitem.setState()
, uniquement lorsque l'utilisateur clique sur l'élément dans le menu. Assurez-vous seulement de définir l'état des éléments avec laCheckboxMenuItemGroup.selectItem()
appeler, sinon vous pourriez vous retrouver avec plus d'un élément sélectionné.Ensuite, il vous suffit de créer votre menu comme ceci:
MenuItem
s à un Menu ou sous-classes deMenuItem
, commeMenu
,PopupMenu
(qui n'a aucun sens dans ce contexte), etCheckboxMenuItem
qui est exactement la chose que vous voulez ici. Mais vous aussi vous voulez votreCheckboxMenuItem
s exclusif. Vous ne pouvez pas les ajouter àCheckboxGroup
de sorte que vous aurez à créer une classe qui fonctionne commeCheckboxGroup
mais pourCheckboxMenuItem
s, et attachez vos quatreCheckboxMenuItem
s à elle. Enfin, vous devez ajouter votreCheckboxMenuItem
s individuellement à votreMenu
.À l'aide de swing au lieu de awt.
Vous pouvez ajouter n'importe quel AbstractButton à un ButtonGroup.
Sur OSX Java 7 (1.7.0_40) Julians réponse ne marche pas tout à fait parce que l'objet renvoyé par ItemEvent est une Chaîne plutôt qu'une CheckBoxItem, soiunds comme un bug dans OSX, mais ai eu de travail en modifiant la méthode itemStateChanged