|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Селекторы файла обеспечивают GUI для того, чтобы он переместился по файловой системе, и затем или выбрал файл или каталог из списка, или ввел имя файла или каталога. Чтобы вывести на экран селектора файла, Вы обычно используете JFileChooser API, чтобы показать модальное диалоговое окно, содержащее селектора файла. Другой способ представить селектора файла состоит в том, чтобы добавить экземпляр JFileChooser к контейнеру.
Если Вы намереваетесь распределить свою программу, поскольку Сеть Java™ без знака Запускает приложение, то вместо того, чтобы использовать JFileChooser API следует использовать файловые службы, обеспеченные API JNLP. Эти службы — FileOpenService и FileSaveService — не только оказывают поддержку для того, чтобы выбрать файлы в ограниченной среде, но также и заботятся о фактическом открытии и сохранении их. Пример использования этих служб находится в JWSFileChooserDemo. Документация для того, чтобы использовать API JNLP может быть найдена в
Нажмите кнопку Launch, чтобы работать, JWSFileChooserDemo, используя Сеть Java™ Запускаются (). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.
Работая с JWSFileChooserDemo пример, бояться терять файлы, в которых Вы нуждаетесь. Всякий раз, когда Вы нажимаете сохранить кнопку и выбираете существующий файл, этот демонстрационный пример переводит Файл в рабочее состояние, Существует диалоговое окно с запросом, чтобы заменить файл. Принятие запроса перезаписывает файл.
Остальная часть этого раздела обсуждает, как использовать JFileChooser API. A JFileChooser возразите только подаркам GUI для того, чтобы выбрать файлы. Ваша программа ответственна за выполнение чего-то с выбранным файлом, таким как открытие или сохранение этого. Обратитесь к
JFileChooser API облегчает переводить в рабочее состояние открытый и сохранять диалоговые окна. Тип стили определяет то, на что похожи эти стандартные диалоговые окна и как они отличаются. В стили Java сохранить диалоговое окно выглядит одинаково как открытое диалоговое окно, за исключением title на окне диалогового окна и текста на кнопке, которая одобряет работу. Вот изображение открытого диалогового окна стандарта в стили Java:

Вот изображение вызванного приложения FileChooserDemo это переводит в рабочее состояние открытое диалоговое окно и сохранить диалоговое окно.

FileChooserDemo.java, измените режим выбора файла на режим только для каталогов. (Поиск DIRECTORIES_ONLY и непрокомментируйте строку, которая содержит это.) Затем компилируют и выполняют пример снова. Вы только будете в состоянии видеть и выбрать каталоги, не обычные файлы.Перевод в рабочее состояние стандарта открывается, диалоговое окно требует только двух строк кода:
//Create a file chooser final JFileChooser fc = new JFileChooser(); ... //In response to a button click: int returnVal = fc.showOpenDialog(aComponent);
Параметр showOpenDialog метод определяет родительский компонент для диалогового окна. Родительский компонент влияет на позицию диалогового окна и фрейма, от которого зависит диалоговое окно. Например, стиль Java помещает диалоговое окно непосредственно по родительскому компоненту. Если родительский компонент находится во фрейме, то диалоговое окно зависит от того фрейма. Это диалоговое окно исчезает, когда фрейм минимизируется и вновь появляется, когда фрейм максимизируется.
По умолчанию, селектор файла, которого не показали перед дисплеями все файлы в корневом каталоге пользователя. Можно определить начальный каталог селектора файла при использовании одного из JFileChooser's другие конструкторы, или можно установить каталог с setCurrentDirectory метод.
Звонок showOpenDialog появляется в actionPerformed метод слушателя действия кнопки Open a File:
public void actionPerformed(ActionEvent e) {
//Handle open button action.
if (e.getSource() == openButton) {
int returnVal = fc.showOpenDialog(FileChooserDemo.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
//This is where a real application would open the file.
log.append("Opening: " + file.getName() + "." + newline);
} else {
log.append("Open command cancelled by user." + newline);
}
} ...
}
showXxxDialog методы возвращают целое число, которое указывает ли пользователь, выбранный файл. В зависимости от того, как Вы используете селектора файла, часто достаточно проверить, является ли возвращаемое значение APPROVE_OPTION и затем не изменить любое другое значение. Чтобы получить выбранный файл (или каталог, если Вы устанавливаете селектора файла, чтобы позволить выборы каталога), вызовите getSelectedFile метод на селекторе файла. Этот метод возвращает экземпляр File.
Пример получает имя файла и использует это в сообщении журнала. Можно обратиться к другим методам File объект, такой как getPath, isDirectory, или exists получить информацию о файле. Можно также вызвать другие методы такой как delete и rename изменить файл в некотором роде. Конечно, Вы могли бы также хотеть открыть или сохранить файл при использовании одного из классов чтения или классов для записи, обеспеченных платформой Java. См.
Пример программы использует тот же самый экземпляр JFileChooser class, чтобы вывести на экран стандарт сохраняет диалоговое окно. На сей раз вызовы программы showSaveDialog:
int returnVal = fc.showSaveDialog(FileChooserDemo.this);
При использовании того же самого экземпляра селектора файла, чтобы вывести на экран ее открытое и сохранить диалоговые окна, программа пожинает следующие преимущества:
Наконец, у примера программы есть закомментированные строки кода, которые позволяют Вам изменять режим выбора файла. Например, следующая строка кода делает селектора файла способным выбрать только каталоги, и не файлы:
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
Другой возможный режим выбора FILES_AND_DIRECTORIES. Значение по умолчанию FILES_ONLY. Следующее изображение показывает открытое диалоговое окно с набором режима выбора файла к DIRECTORIES_ONLY. Отметьте, что, в стили Java, по крайней мере, только каталоги видимы — не файлы.

Если Вы хотите создать селектора файла для задачи кроме открытия или сохранения, или если Вы хотите настроить селектора файла, продолжите читать. Мы обсудим следующие темы:
Давайте смотреть на FileChooserDemo2 пример, измененная версия предыдущей демонстрационной программы, которая использует больше JFileChooser API. Этот пример использует селектора файла, который был настроен несколькими способами. Как исходный пример, пользователь вызывает селектора файла с нажатием кнопки. Вот изображение селектора файла:

Поскольку данные показывают, этот селектор файла был настроен для специальной задачи (Присоединяют), обеспечивает пользовательский-choosable фильтр файла (Только Изображения), использует специальное представление файла для файлов изображений, и имеет вспомогательное компонент, который выводит на экран набросок в настоящий момент выбранного файла изображения.
Остаток от этого раздела показывает Вам код, который создает и настраивает этого селектора файла. См., что пример индексирует для ссылок ко всем файлам, требуемым этим примером.
Поскольку Вы видели, JFileChooser class обеспечивает showOpenDialog метод для того, чтобы вывести на экран открытое диалоговое окно и showSaveDialog метод для того, чтобы вывести на экран сохранить диалоговое окно.
У class есть другой метод, showDialog, для того, чтобы вывести на экран селектора файла для пользовательской задачи в диалоговом окне. В стили Java единственной разницей между этим диалоговым окном и другими диалоговыми окнами селектора файла является title на диалоговом окне и метка на одобрить кнопке. Вот код от FileChooserDemo2 это переводит диалоговое окно селектора файла в рабочее состояние для Присоединить задачи:
JFileChooser fc = new JFileChooser(); int returnVal = fc.showDialog(FileChooserDemo2.this, "Attach");
Первый параметр showDialog метод является родительским компонентом для диалогового окна. Вторым параметром является a String объект, который обеспечивает и title для диалогового окна и метку для одобрить кнопки.
Еще раз селектор файла ничего не делает с выбранным файлом. Программа ответственна за реализацию пользовательской задачи, для которой создавался селектор файла.
По умолчанию селектор файла выводит на экран все файлы и каталоги, которые это обнаруживает, за исключением скрытых файлов. Программа может применить один или более фильтров файла к селектору файла так, чтобы селектор показал только некоторые файлы. Селектор файла вызывает фильтр accept метод для каждого файла, чтобы определить, должно ли это быть выведено на экран. Фильтр файла принимает или отклоняет файл, основанный на критериях, таких как тип файла, размер, владение, и так далее. Фильтры влияют на список файлов, выведенных на экран селектором файла. Пользователь может ввести имя любого файла, даже если это не выводится на экран.
JFileChooser поддерживает три различных видов фильтрации. Фильтры проверяются в порядке, перечисленном здесь. Например, управляемый приложением фильтр видит только те файлы, принятые встроенной фильтрацией.
setFileHidingEnabled(false) показать скрытые файлы.FileFilter, инстанцируйте этого, и используйте экземпляр в качестве параметра setFileFilter метод. Установленный фильтр выводится на экран в списке пользовательских-choosable фильтров. Селектор файла показывает только те файлы, что фильтр принимает.FileChooserDemo2 добавляет пользовательский фильтр файла к списку пользовательских-choosable фильтров: fc.addChoosableFileFilter(new ImageFilter());
fc.setAcceptAllFileFilterUsed(false);
В стили Java список селектора показывает имя каждого файла и выводит на экран маленький значок, который представляет, является ли файл истинным файлом или каталогом. Можно настроить это представление файла, создавая пользовательский подкласс FileView и использование экземпляра class как параметр setFileView метод. Пример использует экземпляр пользовательского class, реализованного в
fc.setFileView(new ImageFileView());
ImageFileView class показывает различный значок для каждого типа изображения, принятого фильтром изображения, описанным ранее.
ImageFileView class переопределяет пять абстрактных методов, определенных в FileView следующим образом.
String getTypeDescription(File f)ImageFileView's реализация этого метода:
public String getTypeDescription(File f) {
String extension = Utils.getExtension(f);
String type = null;
if (extension != null) {
if (extension.equals(Utils.jpeg) ||
extension.equals(Utils.jpg)) {
type = "JPEG Image";
} else if (extension.equals(Utils.gif)){
type = "GIF Image";
} else if (extension.equals(Utils.tiff) ||
extension.equals(Utils.tif)) {
type = "TIFF Image";
} else if (extension.equals(Utils.png)){
type = "PNG Image";
}
}
return type;
}
Icon getIcon(File f)ImageFileView's реализация этого метода:
public Icon getIcon(File f) {
String extension = Utils.getExtension(f);
Icon icon = null;
if (extension != null) {
if (extension.equals(Utils.jpeg) ||
extension.equals(Utils.jpg)) {
icon = jpgIcon;
} else if (extension.equals(Utils.gif)) {
icon = gifIcon;
} else if (extension.equals(Utils.tiff) ||
extension.equals(Utils.tif)) {
icon = tiffIcon;
} else if (extension.equals(Utils.png)) {
icon = pngIcon;
}
}
return icon;
}
String getName(File f)null указать, что стиль должен понять это. Другая общая реализация возвраты f.getName().String getDescription(File f)null указать, что стиль должен понять это.Boolean isTraversable(File f)null указать, что стиль должен понять это. Некоторые приложения могли бы хотеть препятствовать тому, чтобы пользователи убывали в определенный тип каталога, потому что он представляет составной документ. isTraversable метод никогда не должен возвращаться true для некаталога.Специализированный селектор файла в FileChooserDemo2 имеет вспомогательное компонент. Если в настоящий момент выбранный пункт является PNG, JPEG, РАЗМОЛВКОЙ, или изображением ДЖИФА, вспомогательное, компонент выводит на экран набросок изображения. Иначе, вспомогательное компонент пусто. Кроме предварительного средства просмотра, вероятно наиболее популярный способ использования вспомогательного компонент является панелью с большим количеством средств управления на этом, таких как флажки тот переключатель между функциями.
Пример вызывает setAccessory метод, чтобы установить экземпляр ImagePreview class, реализованный в ImagePreview.java, как селектор, вспомогательный компонент:
fc.setAccessory(new ImagePreview(fc));
Любой объект, который наследовался от JComponent class может быть вспомогательным компонент. У компонента должен быть привилегированный размер, который выглядит хорошим в селекторе файла.
Селектор файла запускает событие изменения свойства, когда пользователь выбирает элемент в списке. Программа со вспомогательным, которое компонент должен зарегистрировать, чтобы получить эти события, чтобы обновить вспомогательное компонент всякий раз, когда выбор изменяется. В примере, ImagePreview сам объект регистрируется для этих событий. Это сохраняет весь код связанным со вспомогательным компонент вместе в одном class.
Вот реализация примера propertyChange метод, который является методом, вызванным, когда событие изменения свойства запускается:
//where member variables are declared
File file = null;
...
public void propertyChange(PropertyChangeEvent e) {
boolean update = false;
String prop = e.getPropertyName();
//If the directory changed, don't show an image.
if (JFileChooser.DIRECTORY_CHANGED_PROPERTY.equals(prop)) {
file = null;
update = true;
//If a file became selected, find out which one.
} else if (JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(prop)) {
file = (File) e.getNewValue();
update = true;
}
//Update the preview accordingly.
if (update) {
thumbnail = null;
if (isShowing()) {
loadImage();
repaint();
}
}
}
Если SELECTED_FILE_CHANGED_PROPERTY свойство, которое изменилось, этот метод получает a File объект от селектора файла. loadImage и repaint методы используют File возразите, чтобы загрузить изображение и перекрасить вспомогательное компонент.
API для того, чтобы использовать селекторов файла попадает в эти категории:
| Метод или Конструктор | Цель |
|---|---|
|
JFileChooser () |
Создает экземпляр селектора файла. File и String параметры, когда существующий, обеспечивают начальный каталог. |
|
|
Показывает модальное диалоговое окно, содержащее селектора файла. Эти методы возврат APPROVE_OPTION если пользователь, одобренный работа и CANCEL_OPTION если пользователь отменял это. Другое возможное возвращаемое значение ERROR_OPTION, что означает, что непредвиденная ошибка произошла. |
| Метод | Цель |
|---|---|
|
|
Наборы или получают в настоящий момент выбранный файл или (если выбор каталога был включен), каталог. |
|
|
Наборы или получают в настоящий момент выбранные файлы, если селектор файла устанавливается позволить множественный выбор. |
|
|
Наборы или получают режим выбора файла. Приемлемые значения FILES_ONLY (значение по умолчанию), DIRECTORIES_ONLY, и FILES_AND_DIRECTORIES.Интерпретирует или каталоги, или файлы являются выбираемыми согласно текущему режиму выбора. |
|
|
Наборы или интерпретируют, могут ли многократные файлы быть выбраны сразу. По умолчанию пользователь может выбрать только один файл. |
|
|
Наборы или получают ли AcceptAll фильтр файла используется в качестве допустимого выбора в списке фильтра choosable; значение по умолчанию true. |
| Учитывая родительский компонент, создает и возвращает новое диалоговое окно, которое содержит этого селектора файла, зависит от фрейма родителя, и центрируется по родителю. |
| Метод | Цель |
|---|---|
| Прокручивает список селектора файла так, что, обозначенный файл видим. | |
|
|
Наборы или получают каталог, файлы которого выводятся на экран в списке селектора файла. |
| Изменяет список, чтобы вывести на экран родителя текущего каталога. | |
| Проверяет файловую систему и обновляет список селектора. | |
|
|
Наборы или получают свойство, которое определяет, перетаскивают ли автоматический обработку, включается. См. |
| Метод | Цель |
|---|---|
|
освободите setAccessory (javax.swing. JComponent) |
Наборы или получают селектора файла, вспомогательного компонент. |
|
|
Наборы или получают основной фильтр файла селектора файла. |
|
|
Наборы или получают представление файла селектора. |
|
|
Наборы, получает, или изменяет список пользовательских-choosable фильтров файла. |
|
|
Наборы или получают, выводятся ли скрытые файлы на экран. |
|
|
Наборы или получают свойство, которое указывает, показывают ли кнопки Approve и Cancel в селекторе файла. Это свойство является истиной по умолчанию. |
Эта таблица показывает примеры, что селекторы файла использования и точки туда, где те примеры описываются.
| Пример | Где Описано | Примечания |
|---|---|---|
FileChooserDemo |
Этот раздел | Выводит на экран открытое диалоговое окно и сохранить диалоговое окно. |
FileChooserDemo2 |
Этот раздел | Использует селектора файла с пользовательской фильтрацией, пользовательским представлением файла, и вспомогательным компонент. |
JWSFileChooserDemo |
Этот раздел | Использует API JNLP, чтобы открыть и сохранить файлы. |