Il existe deux types de menus : les menus déroulants et les menus contextuels. Ce chapitre traite uniquement des méthodes de programmation par menu déroulant. Les menus sont différents de JComboBox et JCheckBox dans le sens où ils sont toujours visibles dans l'interface. Le menu est similaire au JComboBox dans le sens où un seul élément peut être sélectionné à la fois.
La sélection d'une option dans le menu déroulant ou le menu contextuel génère un événement ActionEvent. L'événement est envoyé au moniteur pour cette option et la signification de l'événement est interprétée par le moniteur.
Barres de menus, menus et éléments de menu
Le menu déroulant est représenté visuellement par le nom qui apparaît sur la barre de menus. La barre de menus (JMenuBar) apparaît généralement en haut du JFrame. la barre de menu affiche plusieurs menus déroulants. Le nom du menu. Il existe deux manières d'activer les menus déroulants. La première consiste à appuyer sur le bouton de la souris, à le maintenir enfoncé et à déplacer la souris jusqu'à ce que vous la relâchiez pour terminer la sélection. L'élément de menu en surbrillance est celui sélectionné. Une autre façon consiste à cliquer avec la souris lorsque le curseur se trouve sur le nom du menu dans la barre de menu. Dans ce cas, le menu se développera et l'élément de menu sera mis en surbrillance.
Une barre de menus peut contenir plusieurs menus (JMenu), et chaque menu peut avoir plusieurs éléments de menu (JMenuItem). Par exemple, la barre de menus de l'environnement Eclipse comprend les menus Fichier, Édition, Source, Refactor et autres, et chaque menu comporte de nombreux éléments de menu. Par exemple, le menu Fichier comporte des éléments de menu tels que Nouveau, Ouvrir le fichier, Fermer et Fermer tout.
La façon d'ajouter un menu à une fenêtre consiste d'abord à créer un objet de barre de menu, puis à créer plusieurs objets de menu, à placer ces objets de menu dans la barre de menu, puis à ajouter des éléments de menu à chaque objet de menu selon les besoins. .
Les éléments de menu dans un menu peuvent également constituer un menu complet. Puisqu'un élément de menu peut être un autre menu complet, une structure de menu hiérarchique peut être construite.
1. Barre de menus
Une instance de la classe JMenuBar est la barre de menus. Par exemple, le code suivant crée un objet barre de menus menubar :
JMenuBar menubar = new JMenuBar();
Pour ajouter une barre de menus à une fenêtre, vous devez utiliser la méthode setJMenuBar() dans la classe JFrame. Par exemple, code :
setJMenuBar(menubar);
Les méthodes courantes de la classe JMenuBar sont :
add(JMenu m) : ajoute le menu m à la barre de menus.
countJMenus() : Obtenez le nombre d'éléments de menu dans la barre de menus.
getJMenu(int p) : Obtenez le menu dans la barre de menu.
remove(JMenu m) : Supprime le menu m dans la barre de menu.
2. Menu
L'objet créé par la classe JMenu est le menu. Les méthodes couramment utilisées de la classe JMenu sont les suivantes :
JMenu() : Crée un menu avec un titre vide.
JMenu(String s) : Créez un menu intitulé s.
add(JMenuItem item) : ajoute l'option de menu spécifiée par l'élément de paramètre au menu.
add(menu JMenu) : ajoute le menu spécifié par le menu paramètre au menu. Implémentez l'intégration de sous-menus dans les menus.
addSeparator() : trace une ligne de séparation entre les options du menu.
getItem(int n) : récupère l'élément de menu à l'index spécifié.
getItemCount() : Obtenez le nombre d'éléments de menu.
insert(JMenuItem item,int n) : Insérer un élément de menu à la position n du menu.
remove(int n) : Supprimer un élément de menu à la position n du menu
RemoveAll () : Supprime tous les éléments de menu du menu.
3. Élément de menu
Une instance de la classe JMenuItem est un élément de menu. Les méthodes courantes de la classe JMenuItem sont les suivantes :
JMenuItem() : Construisez un élément de menu sans titre.
JMenuItem(String s) : construit un élément de menu intitulé.
setEnabled(boolean b) : définit si l'élément actuel peut être sélectionné.
isEnabled() : indique si l'élément de menu actuel peut être sélectionné par l'utilisateur.
getLabel() : Obtenez le nom de l'élément de menu.
setLabel() : Définit le nom de l'option de menu.
addActionListener(ActionListener e) : définit le moniteur pour l'élément de menu. Le moniteur accepte les événements d'action lorsqu'un utilisateur clique sur un menu.
4. Gérer les événements du menu
La source de l'événement du menu consiste à cliquer sur un élément de menu avec la souris. L'interface pour gérer cet événement est ActionListener, la méthode d'interface à implémenter est actionPerformed(ActionEvent e) et la méthode pour obtenir la source de l'événement est getSource()
[Exemple] Méthode d'implémentation d'une petite application. indiquant que la fenêtre a une barre de menu. Il y a un bouton. Lorsque le bouton est dans l'état de fenêtre ouverte, cliquer sur le bouton ouvrira une fenêtre. La fenêtre a une barre de menus avec deux menus, et chaque menu comporte trois éléments de menu. Lorsqu'un élément de menu est sélectionné, le procédé de surveillance d'élément de menu affiche les mots indiquant que l'élément de menu correspondant est sélectionné dans la zone de texte.
import java.applet.* import javax.swing.*; import java.awt.*; import java.awt.event.*; class MenuWindow extends JFrame implements ActionListener{ public static JtextField text; private void addItem(JMenu Menu,String menuName,ActionListener listener){ JMenuItem anItem = new JMenuItem(menuName); anItem.setActionCommand(menuName); anItem.addActionListener(listener); Menu.add(anItem); } public MenuWindow(String s,int w,int h){ setTitle(s); Container con = this.getContentPane(); con.setLayout(new BorderLayout()); this.setLocation(100,100); this.setSize(w,h); JMenu menu1 = new JMenu("体育"); addItem(menu1," 跑步",this); addItem(menu1," 跳绳",this); addItem(menu1,"打球",this); JMenu menu2 = JMenu("娱乐"); addItem(menu2,"唱歌",this); addItem(menu2,"跳舞",this); addItem(menu2,"游戏",this); JMenuBar menubar = new JMenuBar(); text = new JTextField(); menubar.add(menu1); menubar.add(menu2); setJMenuBar(MenuBar); con.add(text,BorderLayout.NORTH); } public void actionPerformed(ActionEvent e){ text.setText(e.getActionCommand()+"菜单项被选中!"); } } public class Example6_5 extends Applet implements ActionListener{ MenuWindow window; JButton button; boolean bflg; public void init(){ button = new JButton("打开我的体育娱乐之窗");bflg =true; window = new MenuWindow("体育娱乐之窗",100,100); button.addActionListener(this); add(button); } public void actionPerformed(ActionEvent e){ if(e.getSource()==button){ if(bflg){ window.setVisible(true); bflg = false; button.setLabel("关闭我的体育娱乐之窗"); } else{ window.setVisible(false); bflg = true; button.setLabel("打开我的体育娱乐之窗"); } } } }
5. Le sous-menu Intégrer
crée un menu et crée plusieurs éléments de menu, dont un Un élément de menu est un autre menu (contenant d'autres éléments de menu), qui constitue une imbrication de menu. Par exemple, modifiez le code pertinent dans le programme ci-dessus comme suit :
Menu menu1,menu2,item4; MenuItem item3,item5,item6,item41,item42;
Insérez le code suivant pour créer les éléments de menu item41 et item42, et ajoutez-les au menu item4 :
item41= new MenuItem(“东方红”); item42 = new MenuItem(“牡丹”); item4.add(item41); item4.add(item42);
Lorsque vous cliquez sur le menu item4, deux autres éléments de menu s'ouvriront pour la sélection.
6. Ajoutez un élément de sortie au menu
Ajoutez un nouvel élément de menu et ajoutez une surveillance à l'élément de menu. Utilisez la méthode System.exit() dans la méthode de surveillance correspondante pour cliquer sur le menu Quitter. Environnement d'exécution Java lors de la sélection de l'élément. Par exemple, le code suivant :
… item7 = new MenuItem(“退出”); item7.addActionListener(this); … public void actionPerformed(ActionEvent e){ if(e.getSource()==item7){ System.exit(0); } }
7.设置菜单项的快捷键
用MenuShortcut类为菜单项设置快捷键。构造方法是MenuShortcut(int key)。其中key可以取值KeyEvent.VK_A至KenEvent.VK_Z,也可以取 ‘a'到 ‘z'键码值。菜单项使用setShortcut(MenuShortcut k)方法来设置快捷键。例如,以下代码设置字母e为快捷键。
class Herwindow extends Frame implements ActionListener{ MenuBar menbar; Menu menu; MenuItem item; MenuShortcut shortcut = new MenuShortcut(KeyEvent.VK_E); … item.setShortcut(shortcut); … }
选择框菜单项
菜单也可以包含具有持久的选择状态的选项,这种特殊的菜单可由JCheckBoxMenuItem类来定义。JCheckBoxMenuItem对象像选择框一样,能表示一个选项被选中与否,也可以作为一个菜单项加到下拉菜单中。点击JCheckBoxMenuItem菜单时,就会在它的左边出现打勾符号或清除打勾符号。例如,在例6.5程序的类MenuWindow中,将代码
addItem(menu1,“跑步”,this);addItem(menu1,”跳绳”,this);
改写成以下代码,就将两个普通菜单项“跑步“和“跳绳”改成两个选择框菜单项:
JCheckBoxMenuItem item1 = new JCheckBoxMenuItem(“跑步”); JCheckBoxMenuItem item2 = new JCheckBoxMenuItem(“跳绳”); item1.setActionCommand(“跑步”); item1.addActionListener(this); menu1.add(item1); item2.setActionCommand(“跳绳”); item2.addActionListener(this); menu1.add(item2);
更多使用Java编写图形化的菜单的教程相关文章请关注PHP中文网!