Java Tutorial/Swing/MenuSelectionManager
Содержание
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);
}
}