Я использую JFileChooser
как часть функции экспорта.Я бы хотел, чтобы пользователь мог выбрать файл из средства просмотра файлов JFileChooser
или ввести имя файла в текстовое поле имени файла.Из того, что я прочитал, можно получить это значение с помощью метода getSelectedFile()
, поэтому у меня есть несколько слушателей, которые вызывают getSelectedFile()
и пытаются выполнить некоторые проверки перед выполнением экспорта.
Проблема I 'Я сталкиваюсь с тем, что метод getSelectedFile()
возвращает ноль, когда я ввожу имя в текстовое поле имени файла вручную.Чтобы еще больше запутать, метод getSelectedFile()
работает в трех разных ситуациях:
- Я заполняю его с помощью
setSelectedFile()
(пользователь щелкнул значение в таблице, а я использую setSelectedFile()
) - Я щелкаю существующий файл в средстве просмотра файлов
- Я нажимаю клавишу ВВОД после заполнения текстового поля имени файла
У меня есть три фильтра файлов, но у меня было такое же поведениенезависимо от того, включены они или нет.
Прослушиватели, которые вызывают getSelectedFile()
, выглядят следующим образом:
- Прослушиватель событий для keyReleased
- Прослушиватель событий для mousePressed.
- Прослушиватель PropertyChangeEvent на моем jFileChooser
- Прослушиватель действий на моем jFileChooser
Есть ли лучший способ прослушивания моего jFileChooser для получения пользовательского ввода?Я чувствую, что упускаю что-то очень очевидное ... любая помощь приветствуется!
edit Немного больше информации ...
У меня есть JFileChooser
компонент в JSplitPane
, который находится в JFrame
.Я не звоню showOpenDialog
, чтобы получить ввод от пользователя.Компонент доступен как часть формы.
То, что я хотел бы сделать, это прослушать ввод пользователя, когда он печатает.У меня есть кнопка «Начать экспорт», которую я хотел бы оставить отключенной, пока пользователь не введет правильное имя файла в текстовое поле имени файла в компоненте JFileChooser
.Для этого у меня есть слушатель KeyEvent, который я хотел бы использовать для получения имени файла, когда пользователь вводит его.
дальнейшее редактирование
Вот слушатель действияcode:
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 ().В обоих случаях, однако, он остается нулевым, пока пользователь не выполнит один из трех методов, описанных выше