首先内隐类的位置,应该放在为它生成对象之前(即放在MyListener s = new MyListener)之前。
使用内隐类的典型做法是,外围的class有一个函数,可以传回一个reference指向这个内部类。你正好用到了这点,一个不错的尝试。 ^_^
有两个问题,不知道你考虑过没有,首先e.getSource()这个方法返回的类型是一个Object,而非字符串,“e.getSource()=="新建"”,好像不能比较吧!而且我也尝试过来。一般用法是e.getSource()==t (t为一个发生鼠标时间的组件)。
第二个问题,内隐类中,如果要涉及到外部类的对象时,如果将当前对象传递进来呢?(以前我为这个问题而苦恼。)那么,这样的做法,跟你使用类的组合有什么区别?
呵呵,你热切希望实践新学的东西的心情,我能理解,跟你一样我也是一个热爱Java的初学者。 :)
如果是我,我会这样写关于菜单的相应问题。
package help;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MenuTest extends JFrame{
Frame fr;
MenuItem newf;
MenuItem itmm;
ActionListener listen = new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource()==itmm){
System.exit(0);
}
}
};
public MenuTest(){
fr=this;
MenuBar mb=new MenuBar();
setMenuBar(mb);
Menu file=new Menu("文件");
itmm=new MenuItem("退出");
file.add(new MenuItem("新建"));
file.add(new MenuItem("打开"));
file.add(new MenuItem("关闭"));
file.add(new MenuItem("-"));
file.add(itmm);
itmm.addActionListener(listen);
mb.add(file);
this.setSize(300,200);
this.setVisible(true);
}
public static void main(String[] args) {
new MenuTest();
}
}
/*
* 一般简单的程序建议使用awt的组件,效率更高一点。光加载“import javax.swing.*;”
* 这些东西就够受的了。
* 热切希望和所有热爱Java的朋友一起学习,一起进步! ^_^
*
*/
使用内隐类的典型做法是,外围的class有一个函数,可以传回一个reference指向这个内部类。你正好用到了这点,一个不错的尝试。 ^_^
有两个问题,不知道你考虑过没有,首先e.getSource()这个方法返回的类型是一个Object,而非字符串,“e.getSource()=="新建"”,好像不能比较吧!而且我也尝试过来。一般用法是e.getSource()==t (t为一个发生鼠标时间的组件)。
第二个问题,内隐类中,如果要涉及到外部类的对象时,如果将当前对象传递进来呢?(以前我为这个问题而苦恼。)那么,这样的做法,跟你使用类的组合有什么区别?
呵呵,你热切希望实践新学的东西的心情,我能理解,跟你一样我也是一个热爱Java的初学者。 :)
如果是我,我会这样写关于菜单的相应问题。
package help;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MenuTest extends JFrame{
Frame fr;
MenuItem newf;
MenuItem itmm;
ActionListener listen = new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource()==itmm){
System.exit(0);
}
}
};
public MenuTest(){
fr=this;
MenuBar mb=new MenuBar();
setMenuBar(mb);
Menu file=new Menu("文件");
itmm=new MenuItem("退出");
file.add(new MenuItem("新建"));
file.add(new MenuItem("打开"));
file.add(new MenuItem("关闭"));
file.add(new MenuItem("-"));
file.add(itmm);
itmm.addActionListener(listen);
mb.add(file);
this.setSize(300,200);
this.setVisible(true);
}
public static void main(String[] args) {
new MenuTest();
}
}
/*
* 一般简单的程序建议使用awt的组件,效率更高一点。光加载“import javax.swing.*;”
* 这些东西就够受的了。
* 热切希望和所有热爱Java的朋友一起学习,一起进步! ^_^
*
*/