Salve ragazzi ho creato una frame che utilizza un jfileChooser. Non riesco a fare in modo che mi salvi solo i file. dat. Se in salva in nome file scrivo un file e un estensione diversa da dat ad esempio txt me la salva , non riesco a capire come fare in modo che non mi salvi altre estensioni se non quella specificata , potete spiegarmi perchè?

codice:
public class Esempio10
    extends JFrame {


  JOptionPane msg=new JOptionPane();
  JFileChooser fileChooser=new JFileChooser();
  JTextArea textArea=new JTextArea(20,60);


  public Esempio10() {
    super("Esempio JTextArea, Menu, JOptionPane e JFileChooser"); //crea una JFrame con titolo


    JMenuBar menuBar=new JMenuBar();


    JMenu fileMenu=new JMenu("File");


    JMenuItem apri=new JMenuItem("Apri");
    fileChooser.setAcceptAllFileFilterUsed(false);
    fileChooser.addChoosableFileFilter (new FileNameExtensionFilter ("File dat", "dat"));
    //fileChooser.addChoosableFileFilter (new ExtensionFileFilter ("dat", "Tutti i file con estensione .dat"));
    apri.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
         
        if (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION) {
          try {
            FileReader f = new FileReader(fileChooser.getSelectedFile());
            boolean fine=false;
            while(!fine) {
              try{
                int c=f.read();
                if (c==-1) fine=true;
                else textArea.append((char)c+"");
              }
              catch (IOException ioex) {
              }
            }
          }
          catch (FileNotFoundException fnf) {}
        }
      }
    });


    JMenuItem salva=new JMenuItem("Salva");
    salva.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        if (fileChooser.showSaveDialog(null)==JFileChooser.APPROVE_OPTION) {
          try {
            FileWriter f = new FileWriter(fileChooser.getSelectedFile());
            String s=textArea.getText();
            f.write(s);
            f.flush();
            f.close();
          }
          catch (IOException ioe) {}
        }
      }
    });


    JMenuItem chiudi=new JMenuItem("Chiudi");
    chiudi.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        if (msg.showConfirmDialog(null,"Sei sicuro di voler uscire?", "Conferma",
                             JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION)
         System.exit(0);
      }
    });




    fileMenu.add(apri);
    fileMenu.add(salva);
    fileMenu.addSeparator();
    fileMenu.add(chiudi);


    menuBar.add(fileMenu);


    JMenu aboutMenu=new JMenu("Informazioni");


    aboutMenu.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        JOptionPane msg= new JOptionPane();
        msg.showMessageDialog(null, "Prova JTextArea, JMenu, JOptionPane e JFileChooser", "Informazioni", JOptionPane.INFORMATION_MESSAGE);
      }
    });


    menuBar.add(aboutMenu);


    this.setJMenuBar(menuBar);


    setLocation(200, 100); //imposta la posizione del vertice in alto a sinistra
    addWindowListener(new ExitListener()); //aggiunge un listener per la chiusura


    Container container=getContentPane();
    container.setLayout(new GridLayout(1,1));


    textArea.setLineWrap(true);
    textArea.setWrapStyleWord(true);
    container.add(textArea);


    container.add(new JScrollPane(textArea));


    pack(); //"impacchetta" il frame, cioè fa in modo che assuma dimensione tale
    //da contenere esattamente ciò che è contenuto nella finestra


    setVisible(true);//mostra la finestra. Equivale a setVisible(true);
  }


  public static void main(String[] args) {
/*    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e) {}*/
    Esempio10 es10= new Esempio10();
  }
}