Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Большая часть исходного кода этого конструктора должна быть вам уже знакома. Обратите внимание лишь на следующую особенность: приемник событий действия вводится только для нажимаемой кнопки jbtnCompare, а приемники событий действия для полей ввода текста не добавляются. Дело в том, что содержимое полей ввода текста требуется только в тот момент, когда нажимается кнопка Compare (Сравнить), а в остальное время в их содержимом нет особой нужды. Поэтому и нет никакого смысла предусматривать реагирование утилиты на любые события от полей ввода текста. Когда вы напишете хотя бы несколько реальных программ с использованием библиотеки Swing, вы обнаружите, что потребность в обработке событий от полей ввода текста возникает очень редко.
Начните создание обработчика событий actionPerformedO так, как показано ниже. Этот метод вызывается при нажатии кнопки Compare.
// сравнить файлы после нажатия кнопки 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 (FilelnputStrdam fl = new FilelnputStream(jtfFirst.getText());
FilelnputStream f2 = new FilelnputStream(jtfSecond.getText()))
{
// проверить содержимое каждого файла
do {
i = f1.read();
j = f2.read();
if(i != j) break;
} while(i != -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");
}
}
И наконец, введите в класс SwingFC метод main (), как показано ниже. public static void main(String args[]) {
// создать рамку окна в потоке диспетчеризации событий
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new SwingFC();
}
});
}
}
Ниже приведен весь исходный код утилиты сравнения файлов.
/*
Пример для опробования 15-1.
Утилита сравнения файлов, создаваемая на основе Swing.
Для компиляции этой утилиты требуется JDK 7
или более поздняя версия данного комплекта.
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
class SwingFC implements ActionListener {
JTextField jtfFirst; // Переменная для хранения имени первого файла
JTextField jtfSecond; // Переменная для хранения имени второго файла
JButton jbtnComp; // Кнопка для сравнения файлов
JLabel jlabFirst, jlabSecond; // Подсказки для пользователя
JLabel jlabResult; // Сведения о результатах и сообщения об ошибках
SwingFC() {
// создать новый контейнер JFrame
JFrame jfrm = new JFrame("Compare Files");
// установить диспетчер компоновки FlowLayout
jfrm.setLayout(new FlowLayout());
// задать исходные размеры рамки окна
jfrm.setSize(200, 190);
// завершить программу после закрытия окна
j frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// создать поля для ввода имен файлов
jtfFirst = new JTextField(14);