注意,不是JMenuItemJMenu menu = new JMenu("Test");要实现按下"Test"弹出Messagebox
JOptionPane.showMessageDialog(null, "不能为空!", "消息!", 1);怎么做呢?

解决方案 »

  1.   

    menu.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(null, "不能为空!", "消息!", 1); 
                }
            });
      

  2.   

    menu.addMenuListener(new 实现MenuListener借口的类);
    即可
      

  3.   

    不行啊。弹不出来。还有个问题,怎样实现菜单(JMenu,不是JMenuItem)点一个就在窗口中显示一个界面。
    每个菜单分别显示不同的界面。请个例子。
      

  4.   

    public class MenuBarTest extends JMenuBar {
    public MenuBarTest() { JMenu menu = new JMenu("testMenu");
    menu.addMenuListener(new menuTestActionListener());
    this.add(menu);
    } private class menuTestActionListener implements MenuListener {
    public void menuCanceled(MenuEvent arg0) {

    }
    public void menuDeselected(MenuEvent arg0) {

    }
    public void menuSelected(MenuEvent arg0) {
    JOptionPane.showMessageDialog(null, "不能为空!", "消息!", 1);
    }
    }
    }
      

  5.   

    感谢楼上,可用。。还有个问题,怎样实现菜单(JMenu,不是JMenuItem)点一个就在窗口中显示一个界面。 
    每个菜单分别显示不同的界面。 请个例子。
      

  6.   

    import java.awt.Container;
    import java.awt.FlowLayout;import javax.swing.*;
    import javax.swing.event.MenuEvent;
    import javax.swing.event.MenuListener;public class MenuBarTest extends JMenuBar {
    JFrame parent; JPanel panel1; JPanel panel2; public MenuBarTest(JFrame frame) { this.parent = frame; panel1 = new JPanel();
    panel1.setLayout(new FlowLayout());
    panel1.add(new JLabel("panel1"));
    panel2 = new JPanel();
    panel2.setLayout(new FlowLayout());
    panel2.add(new JLabel("panel2")); JPanel panel = new JPanel();
    panel.add(panel1);
    panel.add(panel2); parent.getContentPane().add(panel); panel1.setVisible(false);
    panel2.setVisible(false); JMenu menu = new JMenu("testMenu1");
    JMenu menu2 = new JMenu("testMenu2"); menu.addMenuListener(new menuTestActionListener(panel, 1));
    menu2.addMenuListener(new menuTestActionListener(panel, 2)); this.add(menu);
    this.add(menu2);
    } private class menuTestActionListener implements MenuListener {
    Container com; int key; public menuTestActionListener(Container com, int key) {
    this.com = com;
    this.key = key;
    } public void menuCanceled(MenuEvent arg0) {
    } public void menuDeselected(MenuEvent arg0) {
    } public void menuSelected(MenuEvent arg0) {
    int count = com.getComponentCount();

    //全部不可见
    for (int i = 0; i < count; i++) {
    com.getComponent(i).setVisible(false);
    }
    //对特定key设为可见
    com.getComponent(key - 1).setVisible(true);
    }
    }
    }把key和menu绑定,然后再设置key对应的界面可见即可
      

  7.   

    3Q可行
    有个小bug点一下菜单时,菜单一直是按下状态。不弹起来。(这样在点菜单1后,直接移到菜单2不用单击也会切换)我先去查JDK(不一定能解决)。。希望楼上给出个解决方案。。
      

  8.   

    JMenu不是JMenuItem,你点击windows程序的菜单栏(JMenu),左右移动鼠标可发现JMenu是一直是按下的状态,而且这个时候JMenu下挂的JMenuItem也会自动弹出来,除非你再点一下JMenu,这个应该是正常的
      

  9.   

    可以使用JTabbedPane,楼主貌似就是在实现JTabbedPane嘛
      

  10.   

    实现MenuListener接口 覆盖里面的方法
      

  11.   


    JTabbedPane是纵向的,有没办法横向创建?
      

  12.   

    楼主试试看这里的 
    http://zhidao.baidu.com/question/130901012.html
      

  13.   

    比如在MFC或者C#中的菜单,menu项设置Popup false就可以实现事件了Java的Menu能否单击后不让它处于按下状态?