Класс FileDialog

advertisement
Класс FileDialog
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Dialog
java.awt.FileDialog
Класс Window
Из опыта работы с оконными графическими интерфейсами
современных операционных систем мы привыкли к тому, что каждое
приложение обладает одним или несколькими окнами. Класс Window
служит базовым классом для всех окон, порождаемых из Java.
Разумеется, он также является интерфейсом к соответствующему окну
операционной системы, которая обслуживает окна всех приложений.
Как правило, используется один из двух наследников Window –
классы Frame и Dialog, которые будут рассмотрены следующими. Однако
экземпляры Window не обладают ни рамкой, ни кнопками закрытия или
минимизации окна, а потому зачастую используются как заставки (так
называемые splash screen).
Конструктор Window требует в качестве аргумента ссылку на Window
или Frame. Другими словами, базовые окна не являются
самостоятельными, они привязываются к другим окнам.
Класс Frame
Класс Frame предназначен для создания
полнофункциональных окон приложений – с
полосой заголовка, рамкой, кнопками закрытия,
минимизации и максимизации окна. Поскольку
Frame, как правило, является главным окном
приложения, он создается невидимым, чтобы
можно было настроить все его параметры,
добавить все вложенные контейнеры и
компоненты и лишь затем отобразить его в
подготовленном виде. Конструктор принимает
текстовый параметр – заголовок фрейма.
Класс Dialog
Если класс Frame предназначен для создания основного окна
приложения, то экземпляры класса Dialog позволяют открывать
дополнительные окна для взаимодействия с пользователем. Это
может потребоваться, например, для вывода критического
сообщения, для ввода параметров и т.д.. Окно диалога обладает
стандартным оформлением – полоса заголовка, рамка. В правой
части полосы заголовка присутствует лишь одна кнопка – закрытия
окна.
Поскольку Dialog является несамостоятельным окном, в
конструктор необходимо передать ссылку на родительский фрейм
или окно другого диалога. Также можно задать заголовок окна.
Как и Frame, диалоговое окно создается изначально невидимым.
Важным свойством диалогового окна является модальность.
Если диалог модальный, то при его появлении на экране
блокируются все пользовательские события, приходящие в
родительское окно такого диалога.
Класс FileDialog
Класс FileDialog является модальным
диалогом (наследником Dialog) и позволяет
легко организовать работу с файлами. Этот
класс предназначен и для открытия файла
(open file), и для сохранения (save file). Окно
диалога имеет внешний вид, принятый для
текущей операционной системы.
Класс FileDialog
Конструктор принимает в качестве
параметров ссылку на родительский фрейм,
заголовок окна и режим работы. Для задания
режима в классе определены две константы –
LOAD и SAVE.
FileDialog fd = new FileDialog(f, "Save file", FileDialog.SAVE);
f – родительское окно
«Save file» - имя фрейма.
FileDialog.SAVE(LOAD) – отвечает за
назначение FileDialog.
Класс FileDialog
• После создания диалога FileDialog его
необходимо сделать видимым.
• Затем пользователь делает свой выбор.
• После закрытия диалога результат можно
узнать с помощью методов getDirectory
(для получения полного имени каталога) и
getFile (для получения имени файла). Если
пользователь нажал кнопку "Отмена"
("Cancel"), то будут возвращены значения
null.
Button save = new Button("save");
save.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
// Создаём и показываем диалог
FileDialog fd = new FileDialog(f, "Save file", FileDialog.SAVE);
fd.setFile("*.txt");
fd.setVisible(true);
// Ждём, пока пользователь выберет файл
// После того, как будет выбран файл, продолжаем обрабатывать нажатие кнопки
String fileName = fd.getDirectory()+fd.getFile(); // Путь и имя выбранного файла
String data = "Some data to be written."; //Это запишем в файл
try{
FileWriter fw = new FileWriter(fileName, true);
BufferedWriter bw = new BufferedWriter(fw);
System.out.println("Write some data to file: " + fileName);
for (int i=2;--i>=0;) {
bw.write(data);
bw.newLine();
}
bw.close();
fw.close();
} catch(Exception e) {e.printStackTrace();}
}
});
fd.setFile("*.txt"); - устанавливает определенный файл.
Другие типы файлов (png, exe) отображаться не будут.
new FileWriter(fileName, true); - открывает файл на запись.
Если второй параметр true, то данные будут дописываться
в файл, если false – файл будет перезаписан.
new BufferedWriter(fw); - класс, отвечающий за запись
текста в файл. Принимает FileWriter.
bw.write(data); - метод, который записывает текст в файл.
bw.newLine(); - метод, создающий в файле переход на
новую строку.
bw.close(); fw.close(); - закрывают пишущие потоки для
успешного сохранения файла.
new FileReader(fileName); - открывает файл на чтение.
new BufferedReader(fr); - класс, отвечающий за чтение
текста из файла. Принимает FileReader.
int br.read(); - метод, который читает один символ из
файла. Возвращает считываемый символ. Если
достигнут конец файла, вернёт число -1.
String br.readLine(); - метод, читающий строку. Если
достигнут конец файла, вернёт null.
s1.contentEquals(s2); - сравнивает значение двух строк.
s1 :
value = “1234567890”
offset = 0
length = 10
s2=s1.substring(5,10) :
value = “1234567890”
offset = 5
length = 5
!=“67890”
Обе переменные ссылаются на одно и то же
строковое значение, но с разными смещениями. При
обычном сравнении, используя оператор == мы
получим false.
Но метод s2.contentEquals(“67890”) вернёт true.
Download