завел мой врач издалека.
410013796724260
• Webmoney
R335386147728
Z369087728698
Диалоговое окно JFileChooserSwing включает мощное средство для работы с файлами — компонент JFileChooser —, представляющий контейнер, в котором расположены несколько компонентов, списков и кнопок, «управляющих» выбором файлов. JFileChooser можно добавить в любое место пользовательского интерфейса, поскольку это весьма гибкий компонент, позволяющий тонко настраивать внешний вид. При необходимости можно полностью изменить стандартное расположение входящих в JFileChooser компонентов и добавить дополнительные элементы, такие как панели предварительного просмотра файлов. Все стандартные диалоговые окна Swing имеют собственные UI-представители, отвечающие за интерфейс окна в используемом приложении. Это особенно важно для внешних видов окон, имитирующих известные платформы, пользователи которых не должны ощущать значительной разницы при переходе от «родных» приложений к Java-приложения. UIManager позволяет выполнять настройку и локализацию интерфейса диалогового окна JFileChooser. Начиная с выпуска JDK 1.3 библиотека Swing предлагает легко настраиваемый инструмент JFileChooser для выбора файлов и при необходимости каталогов. Особенности различных файловых систем скрыты в подклассах абстрактного класса FileSystemView, который представляет внешний вид файловой структуры согласно используемой операционной системе. JFileChooser — это обычный компонент, унаследованный от класса JComponent, так что можно включить его в любое место интерфейса. Настроить и вывести на экран несложное диалоговое окно для открытия файла или сохранения в нем данных совсем легко. Конструкторы JFileChooser// Создание JFileChooser с указанием директории пользователя по умолчанию JFileChooser() // Создание JFileChooser с указанием currentDirectory директории JFileChooser(File currentDirectory) // Создание JFileChooser с указанием currentDirectory директории и // файловой системы JFileChooser(File currentDirectory, FileSystemView fsv) // Создание JFileChooser с определенной файловой системы JFileChooser(FileSystemView fsv) // Создание JFileChooser с указанием currentDirectoryPath пути JFileChooser(String currentDirectoryPath) // Создание JFileChooser с указанием currentDirectoryPath пути и // файловой системы JFileChooser(String currentDirectoryPath, FileSystemView fsv) Основные метод JFileChooser
Режимы работы JFileChooserПеред открытием диалогового окна для выбора файлов или директории необходимо определить режим работы JFileChooser. Компонент JFileChooser может работать в одном из трех режимов, который сохраняется в свойстве fileSelectionMode :
Для определения режима используется метод setFileSelectionMode(mode). Возвращаемые компонентом JFileChooser значения
Пример использования JFileChooserВ примере FileChooserTest.java используется диалоговое окно выбора файла и директории с использованием компонента JFileChooser. Интерфейс окна включает 3 кнопки, по нажатию на которые открывается соответствующее диалоговое окно. Интерфейс главного окна представлен на следующем скриншоте. Листинг примера JFileChooserВ примере определены кнопки, компонент выбора файла fileChooser и параметры файлового фильтра FILTERS. В конструкторе определяется интерфейс окна и вызывается метод addFileChooserListeners() для подключения к кнопкам слушателей. // Пример использования диалоговых окон работы с файлами и директориями import javax.swing.*; import java.awt.event.*; public class FileChooserTest extends JFrame { private JButton btnSaveFile = null; private JButton btnOpenDir = null; private JButton btnFileFilter = null; private JFileChooser fileChooser = null; private final String[][] FILTERS = {{"docx", "Файлы Word (*.docx)"}, {"pdf" , "Adobe Reader(*.pdf)"}}; public FileChooserTest() { super("Пример FileChooser"); setDefaultCloseOperation(EXIT_ON_CLOSE); // Кнопка создания диалогового окна для выбора директории btnOpenDir = new JButton("Открыть директорию"); // Кнопка создания диалогового окна для сохранения файла btnSaveFile = new JButton("Сохранить файл"); // Кнопка создания диалогового окна для сохранения файла btnFileFilter = new JButton("Фильтрация файлов"); // Создание экземпляра JFileChooser fileChooser = new JFileChooser(); // Подключение слушателей к кнопкам addFileChooserListeners(); // Размещение кнопок в интерфейсе JPanel contents = new JPanel(); contents.add(btnOpenDir ); contents.add(btnSaveFile ); contents.add(btnFileFilter); setContentPane(contents); // Вывод окна на экран setSize(360, 110); setVisible(true); } public static void main(String[] args) { // Локализация компонентов окна JFileChooser UIManager.put( "FileChooser.saveButtonText", "Сохранить"); UIManager.put( "FileChooser.cancelButtonText", "Отмена"); UIManager.put( "FileChooser.fileNameLabelText", "Наименование файла"); UIManager.put( "FileChooser.filesOfTypeLabelText", "Типы файлов"); UIManager.put( "FileChooser.lookInLabelText", "Директория"); UIManager.put( "FileChooser.saveInLabelText", "Сохранить в директории"); UIManager.put( "FileChooser.folderNameLabelText", "Путь директории"); new FileChooserTest(); } } Следует отметить, что компоненты диалогового окна локализованы с использованием метода put менеджера пользовательского интерфейса UIManager библиотеки Swing. Листинг метода addFileChooserListenersВ методе addFileChooserListeners() к каждой кнопке подключается свой слушатель, который формирует собственное диалоговое окно с определенными настройками. Выбор директорииbtnOpenDir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fileChooser.setDialogTitle("Выбор директории"); // Определение режима - только каталог fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int result = fileChooser.showOpenDialog(FileChooserTest.this); // Если директория выбрана, покажем ее в сообщении if (result == JFileChooser.APPROVE_OPTION ) JOptionPane.showMessageDialog(FileChooserTest.this, fileChooser.getSelectedFile()); } }); В коде определяется заголовок окна и режим открытия (JFileChooser.DIRECTORIES_ONLY). Интерфейс окна JFileChooser в режиме выбора директории представлен на следующем скриншоте. Сохранение файлаbtnSaveFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fileChooser.setDialogTitle("Сохранение файла"); // Определение режима - только файл fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int result = fileChooser.showSaveDialog(FileChooserTest.this); // Если файл выбран, то представим его в сообщении if (result == JFileChooser.APPROVE_OPTION ) JOptionPane.showMessageDialog(FileChooserTest.this, "Файл '" + fileChooser.getSelectedFile() + " ) сохранен"); } }); В коде определяется заголовок окна и режим открытия (JFileChooser.FILES_ONLY). Интерфейс окна JFileChooser в режиме сохранения файла представлен на следующем скриншоте. Использование фильтраПокажем два способа подключения файлового фильтра. Первый способ - файловый фильтр можно создать и подключить к объекту JFileChooser с использованием класса FileNameExtensionFilter, пример использования которого представлен в следующем коде. import javax.swing.filechooser.FileNameExtensionFilter; ... FileNameExtensionFilter filter = new FileNameExtensionFilter( "Word & Excel", "docx", "xlsx"); fileChooser.setFileFilter(filter); Второй способ - используем вспомогательный внутренний класс FileFilterExt, наследующий свойства класса FileFilter, в котором определяем два поля (расширение файлов extension, описание description) и переопределяем методы accept и getDescription. // Фильтр выбора файлов определенного типа class FileFilterExt extends javax.swing.filechooser.FileFilter { String extension ; // расширение файла String description; // описание типа файлов FileFilterExt(String extension, String descr) { this.extension = extension; this.description = descr; } @Override public boolean accept(java.io.File file) { if(file != null) { if (file.isDirectory()) return true; if( extension == null ) return (extension.length() == 0); return file.getName().endsWith(extension); } return false; } // Функция описания типов файлов @Override public String getDescription() { return description; } } В следующем коде слушателя выбора файла для кнопки btnFileFilter определяется заголовок окна, в цикле создаются экземпляры фильтров FileFilterExt, которые подключаются к fileChooser, и определяется режим открытия (JFileChooser.FILES_ONLY). btnFileFilter.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fileChooser.setDialogTitle("Выберите файл"); // Определяем фильтры типов файлов for (int i = 0; i < FILTERS[0].length; i++) { FileFilterExt eff = new FileFilterExt(FILTERS[i][0], FILTERS[i][1]); fileChooser.addChoosableFileFilter(eff); } // Определение режима - только файл fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int result = fileChooser.showSaveDialog(FileChooserTest.this); // Если файл выбран, покажем его в сообщении if (result == JFileChooser.APPROVE_OPTION ) JOptionPane.showMessageDialog(FileChooserTest.this, "Выбран файл ( " + fileChooser.getSelectedFile() + " )"); } }); Интерфейс окна JFileChooser в режиме выбора файла с использованием файлового фильтра представлен на следующем скриншоте. Скачать примерыИсходные коды примеров, рассмотренных на странице, можно скачать здесь (2.20 Кб). |