Java Tutorial/Swing/MenuSelectionManager

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

Create a change listener and register with the menu selection manager

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) {
            }
          }
        });
  }
}





Getting the Currently Selected Menu or Menu Item

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();
      }
    }
  }
}





Listening for Changes to the Currently Selected Menu or Menu Item

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) {
            }
          }
        });
  }
}





Using MenuSelectionManager to determine the current selection path.

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);
  }
}