Ниже мы привели краткое описание класса Frame. Так как этот класс реализует интерфейс java.awt.MenuContainer, окно класса Frame может содержать меню.
Поля
С помощью полей класса Frame вы можете задавать для своего окна различные типы курсоров:
public final static int CROSSHAIR_CURSOR;
public final static int DEFAULT_CURSOR;
public final static int E_RESIZE_CURSOR;
public final static int HAND_CURSOR;
public final static int MOVE_CURSOR;
public final static int N_RESIZE_CURSOR;
public final static int NE_RESIZE_CURSOR;
public final static int NW_RESIZE_CURSOR;
public final static int S_RESIZE_CURSOR;
public final static int SE_RESIZE_CURSOR;
public final static int SW_RESIZE_CURSOR;
public final static int TEXT_CURSOR;
public final static int W_RESIZE_CURSOR;
public final static int WAIT_CURSOR;
Конструкторы
Для класса Frame определено два конструктора:
Создание окна без заголовка
public Frame();
Создание окна с заголовоком
public Frame(String title);
Методы
- addNotify
Вызов метода createFrame
public void addNotify();
dispose
Удаление окна и освобождение связанных с ним ресурсов
public void dispose();
getCursorType
Определение типа курсора
public int getCursorType();
- getIconImage
Получение пиктограммы, установленной для окна
public Image getIconImage();
- getMenuBar
Получение ссылки на главное меню
public MenuBar getMenuBar();
- getTitle
Получение заголовка окна
public String getTitle();
- isResizable
Определение возможности изменения размеров окна пользователем
public boolean isResizable();
- paramString
Получение строки параметров
protected String paramString();
- remove
Удаление компоненты меню
public void remove(MenuComponent m);
- setCursor
Установка типа курсора
public void setCursor(int cursorType);
- setIconImage
Установка пиктограммы
public void setIconImage(Image image);
- setMenuBar
Установка главного меню
public void setMenuBar(MenuBar mb);
- setResizable
Включение или выключение возомжности изменения размеров окна
public void setResizable(boolean resizable);
- setTitle
Установка заголовка окна
public void setTitle(String title);
Применение класса Frame
Для того чтобы создать свое окно на базе класса Frame, вы должны определить свой класс, унаследовав его от класса Frame следующим образом:
class MainFrameWnd extends Frame
{
. . .
public MainFrameWnd(String sTitle)
{
super(sTitle);
. . .
resize(400, 200);
}
. . .
}
Если мы будем создавать окно с заголовком, нам необходимо соответствующим образом определить конструктор класса этого окна. В частности, наш конструктор должен вызывать конструктор базового класса, передавая ему в качестве параметра строку заголовка окна. Напомним, что конструктор базового класса должен вызываться в конструкторе дочернего класса перед выполнением каких-либо других действий.
Обратите также внимание на вызов метода resize. Этот вызов необходим для задания размеров окна.
В конструкторе вы можете определить различные параметры создаваемого вами окна, например, указать форму курсора, пиктограмму, представляющую окно, задать меню, определить возможность изменения размеров окна и так далее. Мы остановимся подробнее на процедуре добавления меню к окну класса Frame, так как она требует пояснений. С изменением других характеристик окна вы справитесь самостоятельно.
При создании окна классов Frame и Dialog для них устанавливается режим размещения BorderLayout. Если вам нужен другой режим размещения, необходимо установить его явным образом.
Кроме того, созданное окно появится на экране только после вызова для него метода show.
Убрать окно с экрана вы можете методом hide. Этот метод прячет окно, но оставляет в памяти все связанные с ним ресурсы, поэтому вы сможете вновь отобразить спрятанное окно, вызвав метод show.
В отличие от метода hide, метод dispose удаляет окно и освобождает все связанные с ним ресурсы. Этот метод применяется для окончательного удаления окна с экрана и из памяти.
Еще одно замечание касается обработки операции уничтожения окна при помощи двойного щелчка левой клавиши мыши по системному меню окна или при помощи кнопки уничтожения окна, расположенной в правой части заголовка.
Когда пользователь пытается уничтожить окно класса Frame или Dialog подобным образом, возникает событие Event.WINDOW_DESTROY. Вы должны предусмотреть обработку этого события, выполняя действия, соответствующие логике работы вашего окна. Обычно окно уничтожается вызовом метода dispose, как это показано ниже:
public boolean handleEvent(Event evt)
{
if(evt.id == Event.WINDOW_DESTROY)
{
dispose();
return true;
}
else
return super.handleEvent(evt);
}