一个菜鸟问题 把出问题的那个函数剪切出来,年贴到mywin(也就是你的frame)中,就行了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该是:import java.awt.*;public class Menutest{ myWin w=new myWin(); public static void main(String[] args) { w.resize(400,300); w.show(); } public boolean action(Event e,Object lb) { if (e.target instanceof MenuItem) { if (((String)lb).equals("退出")) { w.dispose(); System.exit(0); } } return true; }}class myWin extends Frame{ public myWin() { super("测试菜单"); FileMenu fileMenu=new FileMenu(); HelpMenu helpMenu=new HelpMenu(); MenuBar mb=new MenuBar(); mb.setHelpMenu(helpMenu); mb.add(fileMenu); mb.add(helpMenu); setMenuBar(mb); }}class FileMenu extends Menu{ public FileMenu() { super("文件",true); add(new MenuItem("打开")); add(new MenuItem("关闭")); add(new MenuItem("退出")); }}class HelpMenu extends Menu{ public HelpMenu() { super("帮助"); add(new MenuItem("关于 测试菜单")); add(new MenuItem("类结构")); addSeparator(); add(new CheckboxMenuItem("Balloon 帮助")); Menu subMenu=new Menu("目录"); subMenu.add(new MenuItem("一点帮助")); subMenu.add(new MenuItem("一堆帮助")); add(subMenu); }} 贴到mywin里是没有提示出错了,但我按退出,也没有反应呀 第二种方法也试了,把myWin w=new myWin();挪到外面后,要在前面加上static,要么提示出错。可结果和前面一样,编译也通过了,但是退出仍然没反应. dispose()是frame的方法;Menutest里没有.修改过的代码:import java.awt.*;import java.awt.event.*;public class Menutest{ public static void main(String[] args) { myWin w=new myWin(); w.resize(400,300); w.show(); } public boolean action(Event e,Object lb) { if (e.target instanceof MenuItem) { if (((String)lb).equals("退出")) { //dispose(); System.exit(0); } } return true; }}class myWin extends Frame{ public myWin() { super("测试菜单"); FileMenu fileMenu=new FileMenu(); HelpMenu helpMenu=new HelpMenu(); MenuBar mb=new MenuBar(); mb.setHelpMenu(helpMenu); mb.add(fileMenu); mb.add(helpMenu); setMenuBar(mb); }}class FileMenu extends Menu{ public FileMenu() { super("文件",true); add(new MenuItem("打开")); add(new MenuItem("关闭")); add(new MenuItem("退出")); this.addActionListener (new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { System.exit (0);; } }); }}class HelpMenu extends Menu{ public HelpMenu() { super("帮助"); add(new MenuItem("关于 测试菜单")); add(new MenuItem("类结构")); addSeparator(); add(new CheckboxMenuItem("Balloon 帮助")); Menu subMenu=new Menu("目录"); subMenu.add(new MenuItem("一点帮助")); subMenu.add(new MenuItem("一堆帮助")); add(subMenu); }} to vampirelord我是贴到class myWin extends Frame{ public myWin() { dispose(); }}里面的。 错:应该是class myWin extends Frame{ public myWin(){ } public boolean action(Event e,Object lb) { if (e.target instanceof MenuItem) { if (((String)lb).equals("退出")) { dispose(); System.exit(0); } } return true; }} to vampirelord成功了。我把控件的action交给Frame实现,所以对action的定义要写在Frame 里面是吧? 控件和frame的从属关系弄清楚就行了。你这个例子代码结构不太好,不要再一个文件里写许多class。当然用来学习就无所谓乐。 java怎么将a转换为ascii码 系统登录问题 java小问题 大家说说JAVA核心技术I、II怎么样 初学者求助· 一个方法中出现的异常什么时候应该抛出来,什么时候应该在方法里处理? import borland.jbc1.layout.*;??? 如何实现封账号 高分的简单问题,在线散分 getScreenSize()获取的屏幕分辨率与实际不符 最近想用Java作一个东西,参加“挑战杯”,那位高手能为我提一个方案? 哪里有类似visual j++6.0 MSDN的java2帮助文档?
import java.awt.*;
public class Menutest
{ myWin w=new myWin();
public static void main(String[] args)
{
w.resize(400,300);
w.show();
}
public boolean action(Event e,Object lb)
{
if (e.target instanceof MenuItem)
{
if (((String)lb).equals("退出"))
{
w.dispose();
System.exit(0);
}
}
return true;
}
}class myWin extends Frame
{
public myWin()
{
super("测试菜单");
FileMenu fileMenu=new FileMenu();
HelpMenu helpMenu=new HelpMenu();
MenuBar mb=new MenuBar();
mb.setHelpMenu(helpMenu);
mb.add(fileMenu);
mb.add(helpMenu);
setMenuBar(mb);
}
}class FileMenu extends Menu
{
public FileMenu()
{
super("文件",true);
add(new MenuItem("打开"));
add(new MenuItem("关闭"));
add(new MenuItem("退出"));
}
}class HelpMenu extends Menu
{
public HelpMenu()
{
super("帮助");
add(new MenuItem("关于 测试菜单"));
add(new MenuItem("类结构"));
addSeparator();
add(new CheckboxMenuItem("Balloon 帮助"));
Menu subMenu=new Menu("目录");
subMenu.add(new MenuItem("一点帮助"));
subMenu.add(new MenuItem("一堆帮助"));
add(subMenu);
}
}
把myWin w=new myWin();挪到外面后,要在前面加上static,要么提示出错。
可结果和前面一样,编译也通过了,但是退出仍然没反应.
修改过的代码:
import java.awt.*;
import java.awt.event.*;
public class Menutest
{
public static void main(String[] args)
{
myWin w=new myWin();
w.resize(400,300);
w.show();
}
public boolean action(Event e,Object lb)
{
if (e.target instanceof MenuItem)
{
if (((String)lb).equals("退出"))
{
//dispose();
System.exit(0);
}
}
return true;
}
}class myWin extends Frame
{
public myWin()
{
super("测试菜单");
FileMenu fileMenu=new FileMenu();
HelpMenu helpMenu=new HelpMenu(); MenuBar mb=new MenuBar();
mb.setHelpMenu(helpMenu);
mb.add(fileMenu);
mb.add(helpMenu);
setMenuBar(mb);
}
}class FileMenu extends Menu
{
public FileMenu()
{
super("文件",true);
add(new MenuItem("打开"));
add(new MenuItem("关闭"));
add(new MenuItem("退出"));
this.addActionListener (new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit (0);;
}
});
}
}class HelpMenu extends Menu
{
public HelpMenu()
{
super("帮助");
add(new MenuItem("关于 测试菜单"));
add(new MenuItem("类结构"));
addSeparator();
add(new CheckboxMenuItem("Balloon 帮助"));
Menu subMenu=new Menu("目录");
subMenu.add(new MenuItem("一点帮助"));
subMenu.add(new MenuItem("一堆帮助"));
add(subMenu);
}
}
我是贴到
class myWin extends Frame
{
public myWin()
{
dispose();
}
}
里面的。
应该是
class myWin extends Frame{
public myWin(){
}
public boolean action(Event e,Object lb)
{
if (e.target instanceof MenuItem)
{
if (((String)lb).equals("退出"))
{
dispose();
System.exit(0);
}
}
return true;
}
}
成功了。
我把控件的action交给Frame实现,所以对action的定义要写在Frame 里面是吧?
你这个例子代码结构不太好,不要再一个文件里写许多class。当然用来学习就无所谓乐。