[英]Creating a file from a jFileChooser component
我將JFileChooser
用作導出功能的一部分。 我希望用戶能夠從JFileChooser
的文件查看器中選擇一個文件,或者在文件名文本框中輸入文件的名稱。 根據我的閱讀,可以使用getSelectedFile()
方法獲取該值,因此我有一些偵聽器調用getSelectedFile()
並嘗試在執行導出之前進行一些檢查。
我遇到的問題是,當我手動在文件名文本框中輸入名稱時, getSelectedFile()
方法返回null。 為了增加混亂, getSelectedFile()
方法在以下三種情況下確實起作用:
setSelectedFile()
填充它(用戶單擊表中的值,然后使用setSelectedFile()
) 我有三個文件過濾器,但是無論是否啟用,它們都有相同的行為。
調用getSelectedFile()
偵聽器如下:
有沒有更好的方法來監聽我的jFileChooser以獲取用戶輸入? 我感覺好像缺少了很明顯的東西。
編輯更多信息...
我在JSplitPane
有一個JFileChooser
組件,它在JFrame
。 我不是在調用showOpenDialog
來獲取用戶輸入。 該組件可作為表單的一部分進行訪問。
我想做的是在用戶輸入時聽其輸入。 我有一個“開始導出”按鈕,在用戶在JFileChooser
組件的文件名文本框中輸入有效文件名之前,我希望使其保持禁用狀態。 為此,我有一個KeyEvent偵聽器,我想在用戶鍵入文件時使用它來獲取文件名。
進一步編輯
這是動作偵聽器代碼:
jFileChooserExport.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jFileChooserExportActionPerformed(evt);
}
});
我在這里還有一個屬性更改偵聽器:
jFileChooserExport.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
jFileChooserExportPropertyChange(evt);
}
});
在jFileChooserExportPropertyChange和jFileChooserExportActionPerformed的內部,我試圖通過調用getSelectedFile()獲得用戶選擇的文件。 但是,在兩種情況下,該值都保持為空,直到用戶執行上述三種方法之一為止
閱讀Swing教程中有關如何使用文件選擇器的部分 。 那里的演示代碼對我來說很好用。
由於以下內容似乎都不起作用,因此您可能想要嘗試將PropertyChangeListener添加到JFileChooser中,以偵聽SELECTED_FILE_CHANGED_PROPERTY
可能發生的情況是您的文件選擇器可能啟用了多重選擇 ,在這種情況下, getSelectedFile
將返回null,但是getSelectedFiles
將返回包含所選文件的數組。 您可能要禁用多重選擇 ,或者使用數組(如果您希望用戶僅選擇一個文件,請將multiSelectionEnabled設置為false)。
但是,另一種可能性是,如果嘗試獲取選定的文件,但尚未調用fileChooser.showOpenDialog
或fileChooser.showSaveDialog
或未返回JFileChooser.APPROVE_OPTION
另外,我相信JFileChooser區分大小寫,因此,如果文件名是“ Foo.bar”並且您輸入“ FoO.bar”,它將認為您還需要其他內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.