2013-04-02 55 views
22

我試圖保存我的聯繫人在我的表中,但filechosser總是setit所有文件。 有辦法,我可以將它設置爲只接受.txt並使其成爲默認或唯一選項。我如何使jfilechooser只接受.txt

savecontact.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     JFileChooser filesave = new JFileChooser(); 
     int returnVal = filesave.showSaveDialog(Main.this); 
     if (returnVal == JFileChooser.APPROVE_OPTION) { 
      try { 
       File file = filesave.getSelectedFile(); 

       PrintWriter os = new PrintWriter(file); 
       os.println(""); 
       for (int col = 0; col < table.getColumnCount(); col++) { 
        os.print(table.getColumnName(col) + "\t"); 
       } 
       os.println(""); 
       os.println(""); 

       for (int row = 0; row < table.getRowCount(); row++) { 
        for (int col = 0; col < table.getColumnCount(); col++) { 
         os.print(table.getColumnName(col)); 
         os.print(": "); 
         os.println(table.getValueAt(row, col)); 
        } 
        os.println(""); 
       } 
       os.close(); 
       System.out.println("Done!"); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } 
     } 
    } 
}); 

回答

54

您需要添加一個過濾器:

JFileChooser jf = new JFileChooser(); 
FileNameExtensionFilter filter = new FileNameExtensionFilter("TEXT FILES", "txt", "text"); 
jf.setFileFilter(filter); 
+2

它不應該是'setFileFilter(...)'? –

+0

的代碼工作,但我仍然需要在文件末尾輸入.txt擴展名。有沒有辦法將它保存爲默認的.txt –

+1

調用'File file = filesave.getSelectedFile();'後,可以檢查文件名是否有擴展名「txt」。如果沒有,則創建一個包含擴展名的新File對象,然後繼續'new PrintWriter(file2);'(創建一個新的'File'對象實際上並不創建該文件。) – Enwired

4

您可以使用FileFilter來實現。

創建符合條件的Filefilter。將此文件篩選器設置爲JFileChooser,然後啓動它。

9

下面一些例子

fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp")); 
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("*.pdf", "pdf")); 
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("*.txt", "txt")); 
相關問題