package Peck;                         //打包import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;public class Peck extends JFrame             //Peck继承JFrame类
{
public Peck()                          //定义Peck构造函数
{
JMenuBar mb=new JMenuBar();        //初始化一个菜单栏
JMenu mn =new JMenu("文件");       //初始化一个菜单按钮
JMenuItem mi1=new JMenuItem("项目1");   //下拉菜单第一项
JMenuItem mi2=new JMenuItem("项目2");     //下拉菜单第二项
JMenuItem mi3=new JMenuItem("退出");       //下拉菜单第三项
mn.add(mi1);                                //添加下拉按钮
mn.add(mi2);                             //添加下拉按钮
mn.addSeparator();                      //添加一个不清楚........????.....
mn.add(mi3);                            //添加下拉按钮
mb.add(mn);                             //添加菜单按钮
this.setJMenuBar(mb);                   //不明白this是什么...想象中应该是调用了一个菜单栏.
mi1.addActionListener(new ActionListener()           //添加一个监听器
{
public void actionPerformed(ActionEvent e)   //不明白
{
JOptionPane.showMessageDialog(null,"您已选定菜单项目1");  //弹出信息对话框
}
}
);
mi2.addActionListener(new ActionListener()            //添加一个监听器
{
public void actionPerformed(ActionEvent e)   //不明白
{
JOptionPane.showMessageDialog(null,"您已选定菜单项目2");    //弹出信息对话框
}
}
);
mi3.addActionListener(new ActionListener()   //添加一个监听
{
public void actionPerformed(ActionEvent e)    //不明白
{
System.exit(0);             //退出
}
}
);

}

public static void main(String[] args)           //主函数
{
Peck f=new Peck();                     //实例化构造函数
f.setSize(300,200);                    //添加一个300*200窗体
f.setVisible(true);                    //显示为可见的

}
}
注释很多地方不明白.希望给出正确、仔细的解释。谢谢:)
还有我写的地方可能会有不正确的。还望多多指教。myMSN:[email protected]  可以共同探讨噢^@^.

解决方案 »

  1.   

    mn.addSeparator();   //添加一个不清楚........????.....(添加一个分割条)this.setJMenuBar(mb);    //不明白this是什么...想象中应该是调用了一个菜单栏.
    "this" 就是"Peck " 这个窗口(swing中叫JFrame)
    public void actionPerformed(ActionEvent e) {  }  //不明白实现ActionListener这个接口口中的方法.
      

  2.   

    this.setJMenuBar(mb);                   //不明白this是什么...想象中应该是调用了一个菜单栏.
    解释:this 就是Peck这个窗口,后面的mb是要显示的菜单栏,如果没有调用setJMenuBar(mb)或者是这写成setJMenuBar(),则菜单栏不会显示在窗口中。
    mi2.addActionListener(new ActionListener() {           //添加一个监听器
      public void actionPerformed(ActionEvent e) {  //不明白
        JOptionPane.showMessageDialog(null,"您已选定菜单项目2"); //弹出信息对话框
      }
    });
    解释:这实际上是一个用到了内部类的写法。(详细可找本书看看什么是内部类、为什么要使用内部类、使用内部类的方法)
    它也可以改写成下面的形式:
    HandlerItem handler = new HandlerItem();
    mi2.addActionListener( handler );class HandlerItem implements ActionListener {
        public void actionPerformed( ActionEvent event ){
            JOptionPane.showMessageDialog(null,"您已选定菜单项目1");//弹出信息对话框
        }
    }
    上下的两种形式实际上是相同的。
    余下的也是这样解释