我使用JFileChooser
作爲導出功能的一部分。我希望用戶能夠從JFileChooser
的文件查看器中選擇一個文件,或者在文件名文本框中輸入文件的名稱。從我讀過的文章中可以得到使用getSelectedFile()
方法得到的值,所以我有一些監聽者調用getSelectedFile()
,並在執行導出前嘗試做一些檢查。從jFileChooser組件創建文件
我遇到的問題是getSelectedFile()
方法返回null,當我手動輸入名稱到文件名文本框中。要添加更多的混亂,getSelectedFile()
方法也有三種不同的情況下工作:
- 我通過
setSelectedFile()
填充它(用戶點擊從表中的值,我用setSelectedFile()
) - 我一下現有文件文件查看器
- 我打填充文件名的文本框
我有三個文件過濾器,但也有同樣的行爲,不管他們是否被啓用與否之後按Enter鍵。是
聽衆調用getSelectedFile()
如下:
- 事件偵聽器的keyReleased
- 事件偵聽器的mousePressed。在我的JFileChooser
- 的動作監聽我的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和jFileC的hooserExportActionPerformed我想通過調用getSelectedFile()來獲取用戶選擇的文件。然而,在兩種情況下,直到用戶執行上述三種方法之一,它纔會保持空白。
FWIW我今天大部分時間都在試圖讓它發生,並將其追蹤到一個私人的JTextField,但無法訪問。相反 - 我將控件放在一個名爲'fileChooser.setAccessory(controlPanel)'的面板中,並使用'filechooser.showSaveDialog()'來顯示錶單。 – whrrgarbl