Секреты программирования для Internet на Java
.pdfРис. 18.2.
Возможные усовершенствования
Наш шахматный апплет был распространен среди широкой публики и, похоже, понравился многим. Как всегда, посыпались советы и рекомендации о том, как его можно усовершенствовать. Во-первых, процедура входа на сервер не маскирует вводимый пароль, следовательно, его может подсмотреть любой желающий. Во-вторых, апплет не устанавливает стиль доски 12 вместо 1, оставляя это на усмотрение игрока (см. рис. 18-1). В-третьих, некоторые игроки затруднялись отслеживать партнеров, готовых к сетевой игре, то есть им необходим отдельный список игроков в отдельном окне. Мы решили усовершенствовать апплет, выпустив его следующую версию.
Окно login
Окно login решено было оформить в виде отдельного, внешнего окна. Когда пользователь соединяется сервером, апплет наблюдает за окном login. Как только окно login сформировано, запускается процедура login. Кадр login состоит из двух полей текстового ввода - одно для имени, другое для пароля - и кнопки для запуска процедуры. В качестве окна login можно было бы применить стандартный диалог, поскольку он обладает свойством модальности. Это значит, что программа не реагирует ни на какое событие, не связанное с самим диалогом. К сожалению, на момент написания книги реализация диалога в Netscape Navigator 2.0 для Solaris была немного некорректной, поэтому нам пришлось обходиться без него. Вот исходный код класса
UserLogin:
import java.awt.*; import java.util.*;
public class UserLogin extends Frame { private Button login;
private TextField user; private TextField password; private Component target;
В конструкторе объекта UserLogin задается объект Component, которому следует посылать события, и устанавливается шрифт для отображения в окне login. Далее мы добавляем два текстовых поля TextField, одно для имени пользователя, другое - для его пароля. В последнем в качестве эхо-символа используется звездочка (*). Кроме того, мы добавляем кнопку login, генерирующую событие "login" и закрывающую окно:
public UserLogin(Component target, Font f) { super("Internet Chess Server Login");
www.books-shop.com