Когда вы запускаете предоставленный код, он даже не попадает в обработчик ApproveSelection, если файл не выбран. Внутри есть код для предотвращения нулевого выбора. Это поведение вытекает из метода ApproveSelectionAction BasicFileChooserUI, который проверяет, что если имя файла имеет значение null, оно возвращает без вызова ApproveSelection для выбора, поэтому JFileChooser никогда не получает уведомление о нажатии «Принять». Это действительно длинная уродливая функция, поэтому даже если вы нашли способ получить к ней доступ, было бы сложно изменить поведение.
Несколько возможных путей обхода этого:
1) Вы можете встроить JFileChooser в другой компонент и вместо него отобразить родительский компонент. Затем вы добавили бы JFileChooser и вашу пользовательскую кнопку на ту же панель и добавили обработку кнопок для пользовательской кнопки. Пользовательская кнопка может обрабатывать пользователя, желающего ничего не выбирать. Этот пост может дать некоторые подсказки: JFileChooser, встроенный в JPanel
2) Вы можете использовать функцию «аксессуар» JFileChooser. Обычно он «предназначен» для предварительного просмотра типа файла, но поскольку он принимает произвольный компонент, поэтому нет никаких причин, по которым вы не могли бы добавить свою собственную кнопку «Нет файла», установить слушателя и закрыть диалоговое окно. если эта кнопка нажата и отправить уведомление в ячейку таблицы, что это должно быть пустое значение. Относительно легко.
3) вы можете попытаться взломать диалоговое окно JFileChooser, чтобы добавить дополнительную кнопку рядом с «Сохранить и отменить». Это, вероятно, не очень легко, и вам, вероятно, придется сделать что-то хитрое, чтобы найти кнопку «Отмена» и добавить еще одну кнопку в родительский элемент. Возможно, выполнимо, только если вы являетесь экспертом по Java.
4) вы можете создать какой-то «фальшивый» / специальный файл, который, если выбран, вы делаете исключение для обычной обработки и отображаете пустое имя файла вместо реального имени файла.