JFileChooser.showSaveDialog (...) - как установить предлагаемое имя файла

В JFileChooser, похоже, отсутствует функция: способ предложить имя файла при сохранении файла (то, что обычно выбирается, чтобы его заменили, когда пользователь начнет печатать).

Это можно обойти?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
62
0
72 913
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Если я вас правильно понял, нужно использовать метод setSelectedFile.

JFileChooser jFileChooser = new JFileChooser();
jFileChooser.setSelectedFile(new File("fileToSave.txt"));
jFileChooser.showSaveDialog(parent);

Файл не должен существовать.

Обновлено: Если вы передадите файл с абсолютным путем, JFileChooser попытается позиционировать себя в этом каталоге (если он существует).

Если это не сработает, есть обходной путь:

dialog.getUI().setFileName( name )

Но вы должны проверить, какой режим выбора - FILES_ONLY или FILES_AND_DIRECTORIES. Если это DIRECTORIES_ONLY, то setSelectedFile() удалит имя файла.

Но как бы вы получили доступ к диалогу? Он частный, создается на месте в showSaveDialog() и удаляется сразу после того, как он был показан, все еще внутри этой функции.

Nyerguds 12.08.2011 12:26

setSelectedFile не работает с каталогами, как упоминалось выше, решением является

    try {
        FileChooserUI fcUi = fileChooser.getUI();
        fcUi.setSelectedFile(defaultDir);
        Class<? extends FileChooserUI> fcClass = fcUi.getClass();
        Method setFileName = fcClass.getMethod("setFileName", String.class);
        setFileName.invoke(fcUi, defaultDir.getName());
    } catch (Exception e) {
        e.printStackTrace();
    }

К сожалению, setFileName не включен в интерфейс пользовательского интерфейса, поэтому необходимо вызывать его динамически. Проверено только на Mac.

Работайте у меня на Mac 10.3.4 / Java 1.4.2

Daniel De León 15.06.2012 21:32

Другие вопросы по теме