你侦听的事件不正确
你可以改为下面这样
//Overridden so we can exit when window is closed
    protected void processWindowEvent(WindowEvent e)
    {
        super.processWindowEvent(e);
        if (e.getID() == WindowEvent.WINDOW_CLOSING)
        {
            /*
            加入你要处理的事情
            */
            System.exit(0);
        }
    }

解决方案 »

  1.   

    不对应该改为这样就行:
    public static void main(String args[])
    {
    JFrame f = new JFrame("JFileChooser Demo");
    f.getContentPane().add(new JFileChooserDemo(f));
    f.pack();
    f.setVisible(true);
    f.addWindowListener(new java.awt.event.WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    JOptionPane.showMessageDialog(null,"leecl");
    e.getWindow().setVisible(false);
    e.getWindow().dispose();
    System.exit(0);
    }
    });
    }
      

  2.   

    //修改过,OK了
    import javax.swing.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    public class JFileChooserDemo extends JPanel{
       public JFileChooserDemo(JFrame f){
          final JFrame frame = f;
          final JFileChooser chooser = new JFileChooser();
          JFileFilter filter = new JFileFilter();
          filter.addType(".java");
          filter.addType(".class");
          filter.addType(".jar");
          filter.setDescription("Java-related files");
          chooser.addChoosableFileFilter(filter);
          JButton b = new JButton("choose file");
          add(b);
          b.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e){
                int returnVal = chooser.showOpenDialog(frame);
                if (returnVal == JFileChooser.APPROVE_OPTION){
                   System.out.println("You choose a file named: "+
                       chooser.getSelectedFile().getPath());
                   
                }else{
                   System.out.println("You did not choose a file");
                }
             }
          });
       }
       
       class JFileFilter extends javax.swing.filechooser.FileFilter{
          protected String description;
          protected ArrayList exts = new ArrayList();
          
          public void addType(String s){
            exts.add(s);
          }
          public boolean accept(File f){
             if (f.isDirectory())
             {
                return true;
             }else if(f.isFile()){
                Iterator it = exts.iterator();
                while(it.hasNext()) {
                   if(f.getName().endsWith((String)it.next()))
                      return true;
                }
             }
           return false;
          }
          
          public void setDescription(String s){
             description = s;
          }
          
          public String getDescription(){
             return description;
          }
       }
       public static void main(String args[])
       {
          JFrame f = new JFrame("JFileChooser Demo");
          f.getContentPane().add(new JFileChooserDemo(f));
          f.pack();
          f.setVisible(true);
          /*************************************************/
          f.addWindowListener(new WindowAdapter(){
             public void windowClosing(WindowEvent e){
                e.getWindow().setVisible(false);
                e.getWindow().dispose();
                System.exit(0);
             }
          });
          /*************************************************/
       }
    }