середа, 13 серпня 2014 р.

Як показати діалог "зберегти" з допомогою JFileChooser

Як показати діалог "зберегти" з допомогою JFileChooser

Якщо вашій програмі потрібно зручно вказати положення файлу, папки або ж місцезбереження файлу, то для цих цілей Swing надає клас javax.swing.JFileChooser. Виклик діалогу збереження файлу схожого на той що використовується у віндовз, здійснюється через метод showSaveDialog():

  public int showSaveDialog(Component parent)

Де parent - це батьківський компонент діалогу, переважно JFrame. Коли користувач введе ім'я файлу і натисне ОК або Cancel, метод повертає одне з наступних значень:

   
   JFileChooser.CANCEL_OPTION // користувач відмінив вибір файлу
   JFileChooser.APPROVE_OPTION // користува здійснив вибір файлу
   FileChooser.ERROR_OPTION // якщо користувач закрив вікно
                            // кнопкою закриття Х.

Після того як користувач здійснив свій вибір, ми можемо використати метод getSelectedFile() щоб взяти нам об'єкт файлу:

    File getSelectedFile()

Перед викликом методу showSaveDialog(),  ви можливо захочете встановити деякі опції для діалогу:
  
    setDialogTitle(String) // встановлює заголовок вікна.
    setCurrentDirectory(File) // встановити директорію для збереження

Приклад коду:

// батьківський компонет діалогового вікна
JFrame parentFrame = new JFrame();
 
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Вкажіть як зберегти файл");   
 
int userSelection = fileChooser.showSaveDialog(parentFrame);
 
if (userSelection == JFileChooser.APPROVE_OPTION) {
    File fileToSave = fileChooser.getSelectedFile();
    System.out.println("Зберегти як: " + fileToSave.getAbsolutePath());
}

Можна встановити фільтр для задання розширень файлу:

 
FileNameExtensionFilter filter = 
                      new FileNameExtensionFilter("csv файл","csv");
fileChooser.setFileFilter(filter);

Вікно може виглядати так:


В результаті отримали об'єкт File і можна створювати потоки вводу-виводу і записувати у файл використовуючи отриманий об'єкт File. Об'єкт File, хто ще не знає є дискриптором файлу і мабуть, основне що в ньому є - це адрес розміщення файлу і його назва.

 При написанні було використано матеріали із codejava.net