Java Tutorial/Swing/MenuSelectionManager
Содержание
<source lang="java">
import javax.swing.MenuElement; import javax.swing.MenuSelectionManager; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main {
public static void main(String[] argv) throws Exception { MenuSelectionManager.defaultManager().addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent evt) { MenuSelectionManager msm = (MenuSelectionManager) evt.getSource(); MenuElement[] path = msm.getSelectedPath(); if (path.length == 0) { } } }); }
}</source>
Getting the Currently Selected Menu or Menu Item
<source lang="java">
import java.awt.ruponent; import javax.swing.JMenuItem; import javax.swing.MenuElement; import javax.swing.MenuSelectionManager; public class Main {
public static void main(String[] argv) throws Exception { MenuElement[] path = MenuSelectionManager.defaultManager() .getSelectedPath(); if (path.length == 0) { System.out.println("No menus are opened or menu items selected"); } for (int i = 0; i < path.length; i++) { Component c = path[i].getComponent(); if (c instanceof JMenuItem) { JMenuItem mi = (JMenuItem) c; String label = mi.getText(); } } }
}</source>
Listening for Changes to the Currently Selected Menu or Menu Item
<source lang="java">
import javax.swing.MenuElement; import javax.swing.MenuSelectionManager; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main {
public static void main(String[] argv) throws Exception { MenuSelectionManager.defaultManager().addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent evt) { MenuSelectionManager msm = (MenuSelectionManager) evt.getSource(); MenuElement[] path = msm.getSelectedPath(); if (path.length == 0) { } } }); }
}</source>
Using MenuSelectionManager to determine the current selection path.
<source lang="java">
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.MenuElement; import javax.swing.MenuSelectionManager; public class ContructMenuMenuSelectionManager {
public static void main(final String args[]) { JFrame frame = new JFrame("MenuSample Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JMenuBar menuBar = new JMenuBar(); // File Menu, F - Mnemonic JMenu fileMenu = new JMenu("File"); fileMenu.setMnemonic(KeyEvent.VK_F); menuBar.add(fileMenu); // File->New, N - Mnemonic JMenuItem newMenuItem = new JMenuItem("New"); fileMenu.add(newMenuItem); newMenuItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { MenuElement[] eles = MenuSelectionManager.defaultManager().getSelectedPath(); for(MenuElement ele: eles){ System.out.println(ele); } MenuSelectionManager.defaultManager().clearSelectedPath(); }}); frame.setJMenuBar(menuBar); frame.setSize(350, 250); frame.setVisible(true); }
}</source>