请问JMenu 或Menu 对象有能add 的Action Listener 吗?又或者说比如直接点击菜单(无下拉菜单项)可弹窗窗口或文件的功能如何实现呢?先谢!

解决方案 »

  1.   

    我只懂这样,但不行。
    import java.awt.event.*;
    import javax.swing.*;public class Test2 extends JFrame implements ActionListener
    {
    private JMenuBar menuBar;
    private JMenu help;
    //private JMenuItem aboutItem;public Test2()
    {
        super("Test2...");
        setSize(400,300);
        //aboutItem = new JMenuItem("About");
        help=new JMenu("Help");
        //help.add(aboutItem);
        menuBar=new JMenuBar();
        setJMenuBar(menuBar);
        menuBar.add(help);
        help.addActionListener(this);
        //aboutItem.addActionListener(this);
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }public void actionPerformed(ActionEvent e)
    {
        //if((JMenuItem)e.getSource()==aboutItem)
        if((JMenu)e.getSource()==help)
        {
            new AboutDialog();
        }
    }class AboutDialog extends JDialog
    {
        public AboutDialog()
        {
            setTitle("About");
            setSize(280,180);
            setVisible(true);
            setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        }
    }public static void main(String[] args)
    {
        new Test2();
    }
    }
      

  2.   

    哦,没看清楚你的问题,不好意思。Menu和JMenu在点击的时候是没有Action触发的,所以你即使加了ActionListener,也不能触发事件。
    加其他类型的事件监听就可以了。(比如MouseListener,还有swing里面的MenuListener都可以实现)
      

  3.   

    哦,我试试MouseListener和MenuListener的怎么样。
    如果有代码示例的话也请贴给我看看。谢谢!
      

  4.   

    我用这种方式无法编译通过,请帮我看看。谢谢
    import java.awt.event.*;
    import javax.swing.*;public class Test2 extends JFrame implements MouseListener//, ActionListener
    {
    private JMenuBar menuBar;
    private JMenu help;
    //private JMenuItem aboutItem;public Test2()
    {
        super("Test2...");
        setSize(400,300);
        //aboutItem = new JMenuItem("About");
        help=new JMenu("Help");
        //help.add(aboutItem);
        menuBar=new JMenuBar();
        setJMenuBar(menuBar);
        menuBar.add(help);
        //help.addActionListener(this);
        //aboutItem.addActionListener(this);
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }    help.addMouseListener(new MouseAdapter(){    ///////////错误提示需要<标识符>
        public void mouseClicked(MouseEvent mec)
        {
            if(mec.getActionCommand()=="Help")
            System.exit(0);
        }
        });class AboutDialog extends JDialog
    {
        public AboutDialog()
        {
            setTitle("About");
            setSize(280,180);
            setVisible(true);
            setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        }
    }public static void main(String[] args)
    {
        new Test2();
    }
    }
      

  5.   

    成功了。
    请帮我看看这段代码里还有没有冗余的代码,希望越精简越好。
    最后除了MenuListener、JButton(这2个方法不太合满意)以及MouseListener方法之外还有更适合的方法吗?谢谢!import java.awt.event.*;
    import javax.swing.*;public class Test2 extends JFrame implements MouseListener//, ActionListener
    {
    private JMenuBar menuBar;
    private JMenu help;
    //private JMenuItem aboutItem;public Test2()
    {
        super("Test2...");
        setSize(400,300);
        //aboutItem = new JMenuItem("About");
        help=new JMenu("Help");
        //help.add(aboutItem);
        menuBar=new JMenuBar();
        setJMenuBar(menuBar);
        menuBar.add(help);
        help.addMouseListener(this);
        //help.addActionListener(this);
        //aboutItem.addActionListener(this);
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }    //help.addMouseListener(new MouseAdapter(){
        public void mouseClicked(MouseEvent mec)
        {
            //if(mec.getActionCommand()=="Help")
            //System.exit(0);
            if(mec.getSource()==help)
            {
            new AboutDialog();
            }
        }
        public void mousePressed(MouseEvent mep){}
        public void mouseReleased(MouseEvent mer){}
        public void mouseEntered(MouseEvent mee){}
        public void mouseExited(MouseEvent mex){}
        //public void mouseDragged(MouseEvent med){}class AboutDialog extends JDialog
    {
        public AboutDialog()
        {
            setTitle("About");
            setSize(280,180);
            setVisible(true);
            setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        }
    }public static void main(String[] args)
    {
        new Test2();
    }
    }
      

  6.   

    import java.awt.event.*;
    import javax.swing.*;public class Test2 extends JFrame //implements MouseListener, ActionListener
    {
    private JMenuBar menuBar;
    private JMenu help;
    //private JMenuItem aboutItem;public Test2()
    {
        super("Test2...");
        setSize(400,300);
        //aboutItem = new JMenuItem("About");
        help=new JMenu("Help");
        //help.add(aboutItem);
        menuBar=new JMenuBar();
        setJMenuBar(menuBar);
        menuBar.add(help);
        //help.addMouseListener(this);
        //help.addActionListener(this);
        //aboutItem.addActionListener(this);
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    //}    help.addMouseListener(new MouseAdapter(){
        public void mouseClicked(MouseEvent mec)
        {
            //if(mec.getActionCommand()=="Help")
            //System.exit(0);
            if(mec.getSource()==help)
            {
            new AboutDialog();
            }
        }
        });
    //    public void mousePressed(MouseEvent mep){}
    //    public void mouseReleased(MouseEvent mer){}
    //    public void mouseEntered(MouseEvent mee){}
    //    public void mouseExited(MouseEvent mex){}
    }class AboutDialog extends JDialog
    {
        public AboutDialog()
        {
            setTitle("About");
            setSize(280,180);
            setVisible(true);
            setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        }
    }public static void main(String[] args)
    {
        new Test2();
    }
    }