Диалогов прозорец JFileChooser
Всички стандартни диалогови прозорци на Swing имат свои собствени UI представители, които отговарят за интерфейса на прозореца в използваното приложение. Това е особено важно за външния вид и усещането на прозорците, които имитират добре познати платформи, където потребителите не би трябвало да усещат голяма разлика при преминаване от собствени приложения към Java приложения. UIManager ви позволява да персонализирате и локализирате интерфейса на диалоговия прозорецJFileChooser.
Започвайки с пускането на JDK 1.3, библиотеката Swing предоставя много адаптивен инструментJFileChooserза избиране на файлове и по избор директории. Спецификите на различните файлови системи са скрити в подкласовете на абстрактния класFileSystemView, който представя външния вид на файловата структура според използваната операционна система.
JFileChooser е нормален компонент, който наследява класа JComponent, така че можете да го включите навсякъде в интерфейса. Настройването и показването на прост диалогов прозорец за отваряне на файл или запазване на данни в него е доста лесно.
Конструктори JFileChooser
Основен метод на JFileChooser
Файл getCurrentDirectory() | Функция за четене на текущата директория |
Низ getDialogTitle() | Функция за четене на заглавия на прозореца |
int getDialogType() | Функция за четене тип диалог |
FileFilter getFileFilter() | Функция за четене на текущия филтър |
Файл getSelectedFile() | Функция за четене на избрания файл |
Файл[] getSelectedFiles() | Функция за получаване на списък с избрани файлове, ако е зададен флагът MULTI_SELECTION_ENABLED_CHANGED_PROPERTY за избиране на множество файлове |
void setCurrentDirectory(Файлдиректория) | Метод за определяне на текущата директория |
void setDialogTitle(StringdialogTitle) | Метод за заглавие на диалогов прозорец |
void setDialogType(intdialogType) | Метод за определяне на вида на диалоговия прозорец |
void setFileFilter(FileFilter филтър) | Метод за настройка на файлов филтър |
void setFileSelectionMode(режим int) | Метод за определяне на избираеми обекти - файлове, директории или файлове с директории |
void setMultiSelectionEnabled(булев b) | Метод за определяне дали могат да бъдат избрани множество файлове |
void setSelectedFile(Файлов файл) | Метод за избор на файл |
void setSelectedFiles(Файл[] selectedFiles) | Метод за избор на списък с файлове, ако е зададен флагът за избор на MULTI_SELECTION_ENABLED_CHANGED_PROPERTY |
int showDialog(родител на компонент, низ approveButtonText) | Функцията за отваряне на прозорец за избор на файл с персонализирано име на бутон |
int showOpenDialog(родител на компонент) | Функция за отваряне на диалоговия прозорец "Отваряне на файл". |
int showSaveDialog(родител на компонент) | Функция за отваряне на диалоговия прозорец "Запазване на файл". |
Режими на работа на JFileChooser
Преди да отворите диалогов прозорец за избор на файлове или директория, трябва да дефинирате режима на работаJFileChooser. КомпонентътJFileChooserможе да работи в един от трите режима, който се съхранява в свойствотоfileSelectionMode:
- FILES_ONLY - Налични са само файлове, независимо дали файлът е записан или отворен. По подразбиранеJFileChooserработи в този режим.
- FILES_AND_DIRECTORIES - налични са директории и файлове. Този режим трябва да се използва само когато е необходимо да се променят общите свойства на файловата система (файловете не се различават от директориите).
- DIRECTORIES_ONLY - налични са само директории.
МетодътsetFileSelectionMode(mode)се използва за определяне на режима.
Стойности, върнати от компонента JFileChooser
- APPROVE_OPTION - изборът на файл в диалоговия прозорец беше успешен; избраният файл може да бъде получен чрез метода getFile();
- CANCEL_OPTION - изборът на файл се отменя с натискане на бутонОтказ;
- ERROR_OPTION - Възникна грешка при избора на файл или диалогът за избор на файл беше затворен.
Пример за JFileChooser
ПримерътFileChooserTest.javaизползва диалогов прозорец за избор на файл и директория с помощта на компонентаJFileChooser. Интерфейсът на прозореца включва 3 бутона, при щракване върху които се отваря съответният диалогов прозорец. Интерфейсът на главния прозорец е показан на следната екранна снимка.
Примерен списък на JFileChooser
Примерът дефинира бутони,fileChooserселектор на файлове и ФИЛТРИ опции за файлов филтър. Конструкторът дефинира интерфейса на прозореца и извиква методаaddFileChooserListeners()за свързване с бутоните слушател.
Имайте предвид, че компонентите на диалоговия прозорец са локализирани с помощта на методаputна Swing UI ManagerUIManager.
Списък на метода addFileChooserListeners
В методаaddFileChooserListeners()всеки бутон е свързан със собствен слушател, който формира свой собствен диалогов прозорец с определени настройки.
Избор на директория
В коддефинира заглавието на прозореца и режима на отваряне (JFileChooser.DIRECTORIES_ONLY). Интерфейсът на прозорецаJFileChooserв режим на избор на директория е показан на следната екранна снимка.
Запазване на файл
Кодът определя заглавието на прозореца и режима на отваряне (JFileChooser.FILES_ONLY). Интерфейсът на прозорецаJFileChooserв режим на запис на файл е показан на следната екранна снимка.
Използване на филтър
Нека покажем два начина за свързване на файлов филтър. Първият начин е, че може да се създаде файлов филтър и да се прикачи към обектJFileChooserс помощта на класаFileNameExtensionFilter, пример за който е показан в следния код.
Вторият начин е да използваме спомагателния вътрешен клас FileFilterExt, който наследява свойствата на класаFileFilter, в който дефинираме две полета (разширение на файл, описание на описание) и заместваме методитеacceptиgetDescription.
Следният код за слушателя за избор на файл за бутонаbtnFileFilterдефинира заглавието на прозореца, инстанцира филтритеFileFilterExt, които са свързани къмfileChooser, и дефинира отворения режим (JFileChooser.FILES_ONLY) в цикъл.
Интерфейсът на прозорецаJFileChooserв режим на избор на файл с използване на файлов филтър е показан на следната екранна снимка.
Изтегляне на примери
Изходните кодове на примерите, разгледани на страницата, могат да бъдат изтеглени тук (2,20 Kb).