import java.awt.*;
import java.awt.event.*;
public class mm extends Frame implements ActionListener,ItemListener  //extends Frame 用在下边哪句?
{
TextField srm=new TextField();  
MenuBar mb=new MenuBar();
Menu m1=new Menu("Edit");
Menu m2=new Menu("paster");
MenuItem item=new MenuItem("cut");
CheckboxMenuItem chbox=new CheckboxMenuItem("copy");
MenuItem exit =new MenuItem("exit");

mm()
{
setTitle("菜单窗口");
setSize(300,200);
add(srm);
mb.add(m1);
m1.add(m2);
chbox.setState(true);
m1.add(item);
m1.add(chbox);
m1.addSeparator();
m1.add(exit);
m2.add("全部粘贴");
m2.add("部分粘贴");
item.addActionListener(this);  //这里this指代什么?
chbox.addItemListener(this);
exit.addActionListener(this);
setMenuBar(mb);
show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==exit)  //这里很不理解:item和exit,都是addActionListener,JVM怎么知道?             System.exit(0);
else
srm.setText(e.getActionCommand()+" was opened");
}
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==chbox)
if(chbox.getState())
srm.setText(chbox.getLabel()+"被选中");
else
srm.setText(chbox.getLabel()+"被取消");
}
public static void main(String args[])
{
new mm();
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【sure2003】截止到2008-07-12 09:12:37的历史汇总数据(不包括此帖):
    发帖的总数量:222                      发帖的总分数:9697                     每贴平均分数:43                       
    回帖的总数量:182                      得分贴总数量:3                        回帖的得分率:1%                       
    结贴的总数量:218                      结贴的总分数:9617                     
    无满意结贴数:2                        无满意结贴分:50                       
    未结的帖子数:4                        未结的总分数:80                       
    结贴的百分比:98.20 %               结分的百分比:99.18 %                  
    无满意结贴率:0.92  %               无满意结分率:0.52  %                  
    值得尊敬
      

  2.   

    setTitle("菜单窗口");
    setSize(300,200);
    add(srm);这三行理解不?其实是
    this.setTitle("菜单窗口");
    this.setSize(300,200);
    this.add(srm);item.addActionListener(this);  //这里this指代什么?
    chbox.addItemListener(this);
    exit.addActionListener(this);这几个地方的this和上面的一样  你这个类implements ActionListener,ItemListener  
    所以可以传this进去这段程序很别扭
      

  3.   

    你这小子就是不听话,跟你说过多少次了,建议不要使用AWT组件,你就是不听
    今天我老三心情好,就跟你再谈谈
    1、要遵守编码规范,类名首字母要大写,类的名字要有实际意义,要让别人能通过类名知道你这个类是干嘛用的,你这个类的名字MM有什么意义呢,又有谁会一看这个类名就知道你这是个Frame,所以建议你这个类名最好改为MyFrame之类的,反正让人一看就知道你这是个Frame就行了
    2、若没有外部调用,类中的字段最好声明成private,这个我已经这么改了
    3、再重申一次,尽量使用Swing组件,AWT组件已经过时,所以你这个类最好extends JFrame
    4、条件判断、循环、switch的代码最好加上花括号{},让代码结构清晰,读起来方便的多,好好看看我给你改的,反正尽量多使用花括号,比如try  catch之类的地方都用上
    5、若没有特殊需求,构造方法最好用public
    基本上就这些,主要还是代码格式,要让读代码的人看着你这个代码爽,不要让别个一看就头大

    import java.awt.CheckboxMenuItem;
    import java.awt.Frame;
    import java.awt.Menu;
    import java.awt.MenuBar;
    import java.awt.MenuItem;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;public class MM extends Frame implements ActionListener, ItemListener // extends Frame用在下边哪句?
    {
        //你这个问题问的太牛B了,建议还是多看一下书,搞清楚extends到底是什么意思
        //这里我大概说一下,extends可以理解为复制,比如这个类extends Frame,那就是把Frame里的所以代码复制过来了
        //上面只是一个形象的解释,规范一点说,你extends了Frame,就说明你这个类本身就是个Frame,你这个里面做了一些扩展而已,
        //Frame类里所有的public和protected字段或方法都可以在这个类里面直接调用,比如setTitle("菜单窗口");,这里的
        //setTitle方法就是Frame类里的,因为你extends Frame,所以这个方法可以直接调用
        
        //这个是一个序列化字段,估计你一时半会用不到,就不解释了,Eclipse里检测到没有该字段的时候会报警告
        //看着不爽,所以就加上了,值是Eclipse自动计算的
        private static final long serialVersionUID = 1423406072491093515L;    private TextField srm = new TextField();    private MenuBar mb = new MenuBar();    private Menu m1 = new Menu("Edit");    private Menu m2 = new Menu("paster");    private MenuItem item = new MenuItem("cut");    private CheckboxMenuItem chbox = new CheckboxMenuItem("copy");    private MenuItem exit = new MenuItem("exit");    //若没有特殊需求,构造方法最好声明成public
        public MM()
        {
            //下面三行的方法都是Frame类里的,因为你extends Frame,所以可以直接使用,具体的上面已经说了
            //其实可以这三行可以改成this.setTitle("菜单窗口");this.setSize(300, 200);this.add(srm);
            //结合下面的注释,再好好理解一下this吧
            setTitle("菜单窗口");
            setSize(300, 200);
            add(srm);
            
            mb.add(m1);
            m1.add(m2);
            chbox.setState(true);
            m1.add(item);
            m1.add(chbox);
            m1.addSeparator();
            m1.add(exit);
            m2.add("全部粘贴");
            m2.add("部分粘贴");
            
            //这里的this就是这个类本身,如果你是这个类,那这个this就是你自己
            item.addActionListener(this); // 这里this指代什么?
            chbox.addItemListener(this);
            exit.addActionListener(this);
            
            //这两行与前面三行同样的道理,都是Frame里的方法
            setMenuBar(mb);
            //不要使用过时的方法,show()早已过时,建议使用高版本的JDK,最好找个IDE
            //好习惯要从一开始就养好,免得以后写的代码让人BS
            setVisible(true); //show();
        }    public void actionPerformed(ActionEvent e)
        {
            //你完全没搞清楚你这个if是什么意思
            //e.getSource()的意思就是获取事件源,也就是获取到底这个事件是由哪个组件引发的
            //这个if的意思就是如果这个运作是由exit引发的
            if(e.getSource() == exit) //这里很不理解:item和exit,都是addActionListener,JVM怎么知道?
            {
                System.exit(0);
            }
            else
            {
                srm.setText(e.getActionCommand() + " was opened");
            }
        }    public void itemStateChanged(ItemEvent e)
        {
            //这一行我不解释应该可以了吧
            if(e.getSource() == chbox)
            {
                if(chbox.getState())
                {
                    srm.setText(chbox.getLabel() + "被选中");
                }
                else
                {
                    srm.setText(chbox.getLabel() + "被取消");
                }
            }
        }    public static void main(String args[])
        {
            new MM();
        }
    }
      

  4.   

    extends Frame用到有setTitle("菜单窗口");//设置窗口名字
            setSize(300,200);//设置窗口大小
            add(srm);//把文本域加到窗口里面去
             setMenuBar(mb);//设置菜单栏
            show();//让这个窗口是可以被看见,这个方法有点过时了,还是用setVisible(true)的好,import java.awt.*;
    import java.awt.event.*;
    public class mm extends Frame implements ActionListener,ItemListener  //extends Frame 用在下边哪句?用到的是在frame里面的方法
    {
        TextField srm=new TextField();  
        MenuBar mb=new MenuBar();
        Menu m1=new Menu("Edit");
        Menu m2=new Menu("paster");
        MenuItem item=new MenuItem("cut");
        CheckboxMenuItem chbox=new CheckboxMenuItem("copy");
        MenuItem exit =new MenuItem("exit");
        
        mm()
        {
            setTitle("菜单窗口");
            setSize(300,200);
            add(srm);
            mb.add(m1);
            m1.add(m2);
            chbox.setState(true);
            m1.add(item);
            m1.add(chbox);
            m1.addSeparator();
            m1.add(exit);
            m2.add("全部粘贴");
            m2.add("部分粘贴");
            item.addActionListener(this);  //this指的是发事件发到ActionListener的方法里面去
            chbox.addItemListener(this);
            exit.addActionListener(this);
            setMenuBar(mb);
            show();
        }
        public void actionPerformed(ActionEvent e)
        {
            if(e.getSource()==exit) System.exit(0); //这里很不理解:item和exit,都addActionListener,JVM怎么知道?就是用this告诉它的。
            else srm.setText(e.getActionCommand()+" was opened");
        }
        public void itemStateChanged(ItemEvent e)
        {
            if(e.getSource()==chbox)
                if(chbox.getState())
                    srm.setText(chbox.getLabel()+"被选中");
                else
                    srm.setText(chbox.getLabel()+"被取消");
        }
        public static void main(String args[])
        {
            new mm();
        }
    }
      

  5.   

    import java.awt.*;
    import java.awt.event.*;
    public class mm extends Frame implements ActionListener,ItemListener  //extends Frame 用在下边哪句?用到的是在frame里面的方法
    {
        TextField srm=new TextField();  
        MenuBar mb=new MenuBar();
        Menu m1=new Menu("Edit");
        Menu m2=new Menu("paster");
        MenuItem item=new MenuItem("cut");
        CheckboxMenuItem chbox=new CheckboxMenuItem("copy");
        MenuItem exit =new MenuItem("exit");
        
        mm()
        {
            setTitle("菜单窗口");
            setSize(300,200);
            add(srm);
            mb.add(m1);
            m1.add(m2);
            chbox.setState(true);
            m1.add(item);
            m1.add(chbox);
            m1.addSeparator();
            m1.add(exit);
            m2.add("全部粘贴");
            m2.add("部分粘贴");
            item.addActionListener(this);  //this指的是发事件发到ActionListener的方法里面去
            chbox.addItemListener(this);
            exit.addActionListener(this);
            setMenuBar(mb);
            this.setVisible(true);
        }
        public void actionPerformed(ActionEvent e)
        {
            if(e.getSource()==exit) System.exit(0); //这里很不理解:item和exit,都是addActionListener,JVM怎么知道?就是用this告诉它的。
            else srm.setText(e.getActionCommand()+" was opened");
        }
        public void itemStateChanged(ItemEvent e)
        {
            if(e.getSource()==chbox)
                if(chbox.getState())
                    srm.setText(chbox.getLabel()+"被选中");
                else
                    srm.setText(chbox.getLabel()+"被取消");
        }
        public static void main(String args[])
        {
            new mm();
        }
    }没发过代码,再发次看看,汗