2016-11-21 135 views
-1

我必須用FileDialog替換JFileChooser。我無法過濾掉文件。以下是代碼。該過濾器在保存FileDialog中也不可見,用戶也可以用不同的外部文件保存文件。該環境是Windows 10過濾器無法在FileDialog中工作

public class ABCDialog extends JDialog { 

private String fileName = StringUtils.Empty; 

public ABCDialog (Frame frame,String title) { 
    super(frame, title); 
    ..... 
} 

public String getFileName() { 
    return fileName; 
} 

private String setFileName() { 
    FileDialog file = new FileDialog(new Frame(), "Save File...", FileDialog.SAVE); 
    final FilenameFilter filenameFilter = (dir, name) -> name.endsWith(".txt"); 

    file.setFilenameFilter(filenameFilter); 
    file.setFile("*.txt"); 
    file.setVisible(true); 
    return (file.getDirectory() + file.getFile()); 
} 

@Override 
public void setVisible(boolean visible) { 
    .... 
    fileName = setFileName(); 
} 

} 
+0

1)*「我必須用FileDialog替換JFileChooser。」* ..爲什麼? 2)你的問題*「如何X?」*?如果是這樣,請將其添加爲問題的[編輯]。如果沒有,請考慮一個具體問題並執行相同的操作(編輯)。 –

+0

正如問題所示。 filenamefilter沒有應用我提供的上述示例中的過濾器。此外,我想爲Windows/Mac使用標準的FileDialog。如果用戶使用的是Windows,那麼保存對話框應該顯示在窗口中,如果用戶使用的是mac,那麼對話框的外觀應該是基於mac的保存對話框 –

+0

*「filenamefilter是不應用過濾器「*這是一個問題,而不是問題。 **可能由這個問題引起的問題**將沿着*「爲什麼它不起作用?」,*「如何使它工作?」,*「這是正確的方法還是還有更好的嗎?「 - 在詢問聲明結尾處注意」?「。 –

回答

1

按照FileDialog#setFilenameFilter的JavaDoc:

文件名過濾器不會在Sun公司用於Microsoft Windows參考實現的功能。

所以這是預期的行爲。

+0

感謝您的幫助 –

+0

是否有解決方法? –

相關問題