按需下载菜单Java / Swing的人口?

时间:2012-11-23 10:57:40

标签: java swing user-interface

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

最好的问候

1 个答案:

答案 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)方法。