Метод update проверяет нажатие клавиш и в соответствии с нажатыми клавишами отправляет нужный знак. Клавиша влево соответствует точке, а клавиша вправо – тире. Чтобы отправить код азбуки Морзе, метод update просто вызывает метод sendMessage сетевого объекта (клиента или сервера).
После проверки нажатий клавиш и отправки сообщения, если необходимо, метод update обновляет таймер Морзе. Если значение переменной mode равно 1, то выводится точка, затем значение таймера увеличивается до 3, после чего выводится изображение маяка с погашенным огнем. Если значение переменной mode равно 2, выводится тире, при этом счетчик будет увеличиваться до 9. И наконец, если значение переменной mode равно 0, то следует вывести изображение маяка с погашенным огнем, таймер не изменяется.
Метод draw выводит изображение маяка на экран (листинг 14.7).
Листинг 14.7. Метод draw класса LHCanvas выводит на экран нужное изображение маякаprivate void draw(Graphics g) {
// вывести фоновое изображение
if (mode == 0) //В зависимости от режима маяк светится или нет
g.drawImage(background[0], 0, 0, Graphics.TOP | Graphics.LEFT);
else
g.drawImage(background[1], 0, 0, Graphics.TOP | Graphics.LEFT);
// вывести сообщение о статусе
g.setColor(255, 255, 255); // white
g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD, Font.SIZE_MEDIUM));
g.drawString(status, getWidth / 2, 5, Graphics.TOP | Graphics.HCENTER); // В верхней части экрана выводится статусное сообщение
// вывести содержимое буфера на экран
flushGraphics;
}Метод draw начинается с проверки значения переменной mode, которая определяет, какое изображение маяка следует вывести. Если значение этой переменной равно 0, то выводится изображение маяка с погашенным огнем, в противном случае выводится изображение маяка с включенным огнем. Остальной код выводит в нижней части экрана сообщение о статусе соединения. Сообщение о текущем статусе выводится функцией setStatus:
public void setStatus(String s) {
// установить текущий статус
status = s;
}Последний метод класса LHCanvas – это метод receiveMessage, принимающий сообщение, закодированное азбукой Морзе, и в соответствии с сообщением настраивает холст. В листинге 14.8 приведен код этого метода: Листинг 14.8. Метод receiveMessage класса LHCanvas получает сообщение, отправленное по сети
public void receiveMessage(String message) {
// установить режим
if (message.equals("Dash")) // Изменить режим в соответствие с сообщением
mode = 2;
else if (message.equals("Dot"))
mode = 1;
else
mode = 0;
// обнулить таймер
morseTimer = 0;
// очистить сообщение о статусе
status = ""; // При отображении символов азбуки Морзе нет необходимости выводить статусное сообщение
}