当我编写弹出菜单时,我可以检查鼠标事件然后 在调用show()之前准备菜单。
现在我想要下拉菜单的类似功能 住在菜单栏。例如,我有以下菜单 栏布局:
Menu 1
MenuItem 1.1
MenuItem 1.1.1
MenuItem 1.1.2
..
MenuItem 1.1.n
Menu 2
基本上我想生成列表MenuItem 1.1.1,MenuItem 1.1.2, ...,MenuItem 1.1.n在调用下拉菜单时动态调整 在它出现之前。
我怎么能在Java / Swing中这样做?是否有回调涵盖两者 L& F菜单栏的特定键盘/鼠标调用?
最好的问候
答案 0 :(得分:3)
您需要使用javax.swing.JMenuBar
代替java.awt.MenuBar
这些菜单栏可以添加javax.swing.JMenu
方法的addMenuListener(MenuListener l)
。
在此MenuListener中,您可以动态添加和删除菜单。
@Override
public void menuSelected(MenuEvent e) {
// Put your logic here
JMenu dynamicMenu = (JMenu) e.getSource();
dynamicMenu.add(new JMenuItem("MenuItem 1.1.1"));
}
@Override
public void menuDeselected(MenuEvent e) {
// Remove all MenuItems
JMenu dynamicMenu = (JMenu) e.getSource();
dynamicMenu.removeAll();
}
@Override
public void menuCanceled(MenuEvent e) {
// Remove all MenuItems
JMenu dynamicMenu = (JMenu) e.getSource();
dynamicMenu.removeAll();
}
要将JMenuBar添加到JFrame,请使用setJMenuBar(JMenuBar menubar)
方法。