1

当我编写弹出菜单时,我可以检查鼠标事件,然后在调用 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 特定键盘/鼠标调用的回调?

最好的祝福

4

1 回答 1

2

您需要使用 ajavax.swing.JMenuBar而不是 a java.​awt.MenuBar
这些 MenuBar 可以添加javax.​swing.JMenu具有addMenuListener(MenuListener l)方法的 s。

在此 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)方法。

于 2012-11-23T11:37:27.170 回答