请问JMenu 或Menu 对象有能add 的Action Listener 吗?

Applic 2007-12-03 05:40:39
请问JMenu 或Menu 对象有能add 的Action Listener 吗?又或者说比如直接点击菜单(无下拉菜单项)可弹窗窗口或文件的功能如何实现呢?先谢!
...全文
315 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Applic 2007-12-04
  • 打赏
  • 举报
回复 1
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();
}
}
Applic 2007-12-04
  • 打赏
  • 举报
回复
成功了。
请帮我看看这段代码里还有没有冗余的代码,希望越精简越好。
最后除了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();
}
}
Applic 2007-12-03
  • 打赏
  • 举报
回复
我用这种方式无法编译通过,请帮我看看。谢谢


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();
}
}
yuanbo614 2007-12-03
  • 打赏
  • 举报
回复
可以的
Applic 2007-12-03
  • 打赏
  • 举报
回复
哦,我试试MouseListener和MenuListener的怎么样。
如果有代码示例的话也请贴给我看看。谢谢!
Dan1980 2007-12-03
  • 打赏
  • 举报
回复
哦,没看清楚你的问题,不好意思。

Menu和JMenu在点击的时候是没有Action触发的,所以你即使加了ActionListener,也不能触发事件。
加其他类型的事件监听就可以了。(比如MouseListener,还有swing里面的MenuListener都可以实现)
Applic 2007-12-03
  • 打赏
  • 举报
回复
我只懂这样,但不行。


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();
}
}
Dan1980 2007-12-03
  • 打赏
  • 举报
回复
有的。
这个你自己试一下就知道了,不出1分钟就知道结果,比来这里发贴等答案快多了。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧