import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
public class ImageViewer extends JFrame //JFrame 是swing的子类
   implements ActionListener{ //顾名思义它实现一个已经定义好的接口中的方法
   public ImageViewer()
   {  setTitle("ImageViewer Modified by Bushido");//设置窗体的title
      setSize(300, 400); //设置窗体的size                         JMenuBar mbar = new JMenuBar(); //JMenuBar是JMenu的容器
      JMenu m = new JMenu("File"); //JMenu是JMenuItem的容器
      openItem = new JMenuItem("Open");//建立新的JMenuItem实例
      openItem.addActionListener(this); //响应事件
      m.add(openItem);//将JMenuItem加入到JMenu里
      exitItem = new JMenuItem("Exit");//建立新的JMenuItem实例
      exitItem.addActionListener(this);//为exitItem项目注册事件侦听器
      m.add(exitItem);//将JMenuItem加入到JMenu里
      mbar.add(m);//将JMenu加入到JMenuBar
      setJMenuBar(mbar);//将JMenuBar加入到ImageViewer成为ImageViewer的工具菜单      label = new JLabel();//建立JLabel实例
      Container contentPane = getContentPane();//获取当前JFrame的容器
      contentPane.add(label, "Center");//加入label
   }   public void actionPerformed(ActionEvent evt)
   {  Object source = evt.getSource();//获取激活事件的源
      if (source == openItem)//如果是openItem
      {  JFileChooser chooser = new JFileChooser();//建立JFileChooser实例
         chooser.setCurrentDirectory(new File("."));//设置JFileChooser实例的当前目录         chooser.setFileFilter(new
            javax.swing.filechooser.FileFilter()//设置文件过滤器,显示.gif文件和目录
            {  public boolean accept(File f)
               {  return f.getName().toLowerCase()
                     .endsWith(".gif")
                     || f.isDirectory();
               }
               public String getDescription()
               {  return "GIF Images";
               }
            });         int r = chooser.showOpenDialog(this);//打开文件选择对话框
         if(r == JFileChooser.APPROVE_OPTION)//确定
         {  String name
               = chooser.getSelectedFile().getName();//获取选择的文件名
            label.setIcon(new ImageIcon(name));//在label上显示选择的.gif图象
         }
      }
      else if (source == exitItem) System.exit(0);//如果源为exitItem则退出系统
   }   public static void main(String[] args)
   {  JFrame frame = new ImageViewer();//建立ImageViewer实例
      frame.show();//显示
   }   private JLabel label;
   private JMenuItem openItem;
   private JMenuItem exitItem;
}