Читать «Java: руководство для начинающих» онлайн - страница 371

Герберт Шилдт

Дополнительное задание. Создайте апплет, который отображал бы текущее время, обновляя содержимое своего окна каждую секунду. Для того чтобы справиться с этим заданием, вам придется провести дополнительные изыскания. Для начала примите к сведению следующую подсказку: получить текущее время можно, воспользовавшись объектом класса Calendar, относящегося к пакету java.util. (Напомним, что компания Oracle предоставляет оперативно доступную документацию на все стандартные классы Java.) Приобретенных вами до сих пор знаний должно быть достаточно для того, чтобы самостоятельно изучить класс Calendar и использовать его методы для выполнения этого задания. // Простой апплет, отображающий текущее время. import java.util.; import java.awt.; import java.applet.; /

Поясните вкратце, каким образом действует модель делегирования событий в Java. В модели делегирования событий источник формирует событие и передает его одному или нескольким приемникам, которые лишь ожидают наступления события. Получив уведомление, приемник обрабатывает событие, а затем возвращает управление.

Должен ли приемник событий быть зарегистрирован в их источнике? Должен. Для того чтобы приемник получал уведомления о событиях, он должен быть зарегистрирован в источнике.

Дополнительное задание. Среди языковых средств Java для отображения информации имеется метод drawLine (). Он рисует текущим цветом прямую линию между двумя точками. Этот метод относится классу Graphics. Используя метод drawLine (), напишите апплет, отслеживающий перемещение мыши. Если кнопка мыши нажата, апплет должен рисовать на экране непрерывную линию до тех пор, пока кнопка не будет отпущена. / Отслеживание перемещения мыши путем рисования линии. Признаками начала и конца линии являются нажатие и отпускание кнопки мыши. / import java.awt.; import java.awt.event.; import java.applet.; / / public class TrackM extends Applet implements MouseListener, MouseMotionListener { Приложение А. Ответы на вопросы для самопроверки 595 int curX = 0, curY =0; // Текущие координаты int oldX = 0, oldY =0; // Предыдущие координаты boolean draw; public void init () { addMouseListener(this); addMouseMotionListener(this); draw = false; } / Следующие три метода не используются, но их пустые реализации нужны, так как эти методы объявлены в интерфейсе MouseListener. */ // обработать наведение курсора мыши на элемент // пользовательского интерфейса public void mouseEntered(MouseEvent me) { } // обработать отведение мыши от элемента // пользовательского интерфейса public void mouseExited(MouseEvent me) { } // обработать щелчок кнопкой мыши public void mouseClicked(MouseEvent me) { } // обработать нажатие кнопки мыши public void mousePressed(MouseEvent me) { // сохранить координаты oldX = me.getx(); oldY = me.getY(); , draw = true; } // обработать отпускание кнопки мыши public void mouseReleased(MouseEvent me) { draw = false; } // обработать перетаскивание мыши public void mouseDragged(MouseEvent me) { // сохранить координаты curX = me.getx(); curY = me.getY(); repaint(); } // обработать перемещение мыши public void mouseMoved(MouseEvent me) { // отобразить состояние showStatus ("Moving mouse at " + me.getXO + ", " + me.getYO); } 596 Java 71 руководство для начинающих, 5-е издание // отобразить линию в окне апплета public void paint(Graphics g) { if(draw) g.drawLine(oldX, oldY, curX, curY); } }