Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
jtfSecond = new JTextField(14);
// установить команды действия для полей ввода текста
jtfFirst.setActionCommand("fileA");
jtfSecond.setActionCommand("fileB");
// создать кнопку Compare
JButton jbtnComp = new JButton("Compare");
// добавить приемник событий действия от кнопки Compare
jbtnComp.addActionListener(this) ;
// создать метки
jlabFirst = new JLabel("First file: ");
jlabSecond = new JLabel("Second file: ");
jlabResult = new JLabel("");
// добавить компоненты на панели содержимого
jfrm.add(jlabFirst);
jfrm.add(jtfFirst);
jfrm.add(jlabSecond);
jfrm.add(jtfSecond);
jfrm.add(jbtnComp);
jfrm.add(jlabResult);
// отобразить рамку окна
jfrm.setVisible(true);
}
// сравнить файлы после нажатия кнопки Compare
public void actionPerformed(ActionEvent ae) {
int i=0, j=0;
// сначала убедиться, что введены имена обоих файлов
if(jtfFirst.getText().equals("")) {
jlabResult.setText("First file name missing.");
return;
}
if(jtfSecond.getText().equals("") ) {
jlabResult.setText("Second file name missing.");
return;
}
// сравнить файлы, используя оператор try с ресурсами
try (FilelnputStream fl = new FilelnputStream(jtfFirst.getText())
{
FilelnputStream f2 = new FilelnputStream(jtfSecond.getText()))
// проверить содержимое каждого файла
do {
i = f1.read();
j = f2.read();
if(i != j) break;
} whiled != -1 && j != -1);
if(i != j)
jlabResult.setText("Files are not the same.");
else
jlabResult.setText("Files compare equal.");
} catch(IOException exc) {
jlabResult.setText("File Error");
}
}
public static void main(String args[]) {
// создать рамку окна в потоке диспетчеризации событий
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new SwingFC();
}
}) ;
}
}
Применение анонимных внутренних классов для обработки событий
Программы из примеров, рассмотренных до сих пор в этой главе, не отличались особой сложностью. Такими же несложными были и используемые в них обработчики событий, в роли которых выступал основной класс приложения, реализующий интерфейс соответствующего приемника событий, а все события передавались для обработки экземпляру этого класса. И хотя такой подход вполне пригоден для написания прикладных программ с пользовательским интерфейсом, его нельзя рассматривать как единственно возможный. В подобных программах могут применяться и другие способы обработки событий, происходящих в пользовательском интерфейсе. Во-первых, для каждого события можно реализовать приемник в отдельном классе. Благодаря этому разнородные события будут обрабатываться в разных классах. И во-вторых, приемники событий можно реализовать с помощью анонимных внутренних классов.
У анонимного внутреннего класса нет имени, а экземпляр такого класса получается динамически по мере необходимости. Анонимные внутренние классы позволяют значительно упростить создание обработчиков для некоторых видов событий. Допустим, имеется компонент jbtn типа JButton. Приемник событий действия от кнопки можно реализовать следующим образом:
jbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
// обработать событие здесь
}
});