2013-02-22 38 views
4

我試圖使用JFileChooser來獲取加載和保存文件。 openFileDialog()出現的對話框工作正常,但是當我使用saveFileDialog()方法時,對話框窗口中的所有文件名都變爲灰色。這發生在有或沒有FileFilter(我的例子包括一個更好地顯示我所看到的)。JFileChooser.showSaveDialog:所有文件灰顯

這裏有一個最小的方案來說明:

import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.filechooser.FileNameExtensionFilter; 

public class Temp extends JFrame { 
    public static void main(String[] args){ 
    JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JFileChooser chooser = new JFileChooser(); 
     FileNameExtensionFilter filter = new FileNameExtensionFilter("Text File", "txt"); 
     chooser.setFileFilter(filter); 

     frame.setVisible(true); 
     chooser.showOpenDialog(null); 
     chooser.showSaveDialog(null); 
    } 
} 

下面是我在打開對話框中看到: Open Dialog

下面是我在保存對話框中看到: Save Dialog

儘管灰顯,保存對話框中的所有文件都是可選的。

我在Mac/Mountain Lion和Java 7中。

這是預期的行爲?有沒有辦法改變這個?

(編輯:每通過MadProgrammer +以下trashgod評論,這似乎是與外觀+感覺其他(本地)Mac應用程序的一致性)

+3

簡短的回答,是的,這是預期的行爲。與Windows不同,Windows只是將文件從可見列表中排除,出於某種奇怪的原因,Mac OS外觀和感覺決定文件應灰顯(當您無法選擇它們時) – MadProgrammer 2013-02-22 03:12:22

+0

但根據過濾器,。txt文件應該是可見的+可選的(看看它們在Open Dialog中的樣子:黑色(而不是灰色)字體 – YosemiteMark 2013-02-22 03:16:29

+0

@MadProgrammer是正確的你可以選擇一個灰色的名字, Save as' name。 – trashgod 2013-02-22 03:29:29

回答

2

我正在尋找.txt文件,以便在保存對話框中以「普通」顏色顯示。

這由FileChooserUI代表特定的特定外觀控制&感覺,例如, AquaFileChooserUI。您可以使用不同的L & F(費力地)編寫自己的FileChooserUI或開發自定義的File Browser GUI

+1

哦,不錯的鏈接。 ;)OTOH我懷疑典型的OS X用戶會更喜歡默認外觀('最少突然出現的路徑'等)。很高興有替代品。 :) – 2013-02-22 04:32:40

0

嗯...我想,這個節目對話的方式,你這不是最好的方式

chooser.showOpenDialog(null); 
     chooser.showSaveDialog(null); 

我認爲這可能會產生衝突。你爲什麼不嘗試使用JFrame來幫助你?試試這段代碼,只是爲了知道問題是否是saveDialog。然後你可以根據你的編程需求來調整它。

JFrame parentFrame = new JFrame(); 

JFileChooser fileChooser = new JFileChooser(); 
fileChooser.setDialogTitle("Specify a file to save");  

int userSelection = fileChooser.showSaveDialog(parentFrame); 

if (userSelection == JFileChooser.APPROVE_OPTION) { 
    File fileToSave = fileChooser.getSelectedFile(); 
    System.out.println("Save as file: " + fileToSave.getAbsolutePath()); 
} 

由於事實上,你可以嘗試使用setLookAndFeel,我記得我有這個問題,我的MacBook Pro工作。

+0

使用一個父框架給了我相同的行爲 – YosemiteMark 2013-02-22 03:20:28

0

我最終什麼事做的是使用:

JFileChooser chooser = new JFileChooser(...); 
chooser.showDialog(myFrame, "Save"); 

我保存對話框看起來像一個保存對話框,以及FileFilter灰色出來只有失敗的測試文件。