Java Tutorial/Swing/MenuSelectionManager

Материал из Java эксперт
Перейти к: навигация, поиск

Create a change listener and register with the menu selection manager

   <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>