L'exécution d'une action lorsqu'un JMenuItem est cliqué?
J'ai donc fait un programme simple avec un menu de base au-dessus du cadre, Maintenant j'ai juste besoin de mettre des actions derrière chaque JMenuItem. Im du mal à travailler le code, mais, Ici, c'est ce que je pensait de travail:
JMenu file_Menu = new JMenu("File");
JMenuItem fileExit = new JMenuItem("Exit Program");
file_Menu.add(fileExit);
fileExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFrame hello = new JFrame("POPUP");
hello.setSize(100,75);
hello.setDefaultCloseOperation(hello.EXIT_ON_CLOSE);
hello.setVisible(true);
}
});
main_Menu.add(file_Menu);
Cela ne semble pas fonctionner, cependant, j'ai pensé que ce code serait de créer une petite fenêtre pop-up lorsque l'élément de menu est cliqué.
Peut de n'importe quel endroit du bug parce que je ne peux pas semblent.
- Il imprime n'importe quoi, si vous ajoutez du Système.out.println("bonjour!") au début de votre actionPerformed() la méthode ?
Vous devez vous connecter pour publier un commentaire.
Suggestion: au Lieu d'ajouter un distinct
ActionListener
, il suffit d'utiliserAbstractAction
:Je voudrais aussi suggérer, plutôt que de les
EXIT_ON_CLOSE
sur le menu déroulant, vous la définissez sur le cadre principal de votre application et de l'action, simplement appeltheMainFrame.dispose()
.Vous l'ai eu de travail, mais vous avez un autre problème.
Ne pas faire ceci:
Lorsque vous fermez la fenêtre pop-up frame, l'ensemble de votre JVM se termine. Consulter JFrame.setDefaultCloseOperation javadoc une valeur plus appropriée.
Donner un exemple d'Action (étendent à partir de AbstractAction) à JMenuItem
Basé sur le code que vous avez posté, il semble comme il devrait fonctionner, mais nous ne pouvons pas voir l'ensemble du contexte d'utilisation de l'élément de menu est utilisé.
Avez-vous déboguer votre code (avec un Système.out.println) pour voir si le ActionListener est invoquée?
Si vous avez besoin de plus d'aide pour poster votre SSCCE qui illustre le problème.
Il fixe.
Oublié d'ajouter la méthode actionPerformed.
actionPerformed
fonction est assurée correctement par le précédent avec@Override
.