Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объекты интерфейса.doc
Скачиваний:
10
Добавлен:
02.02.2015
Размер:
371.71 Кб
Скачать

Контейнер Framе

Контейнер Frame – это полноценное готовое окно со строкой заголовка, в которую помещены кнопки контекстного меню, сворачивания окна в ярлык и разворачивания во весь экран и кнопка закрытия приложения. Заголовок окна записывается в конструкторе или методом setTitie(string title). Окно окружено рамкой. В него можно установить строку меню методом setMenuBar (MenuBar mb).

На кнопке контекстного меню в левой части строки заголовка изображена дымящаяся чашечка кофе – логотип Java. Можно установить там другое изображение методом setIconImage(image icon), создав предварительно изображение icon в виде объекта класса image.

Все элементы окна Frame вычерчиваются графической оболочкой операционной системы по правилам этой оболочки. Окно Frame автоматически регистрируется в оконном менеджере графической оболочки и может перемещаться, менять размеры, сворачиваться в панель задач (task bar) с помощью мыши или клавиатуры, как "родное" окно операционной системы.

Создать окно типа Frame можно следующими конструкторами:

  • Frame () – создает окно с пустой строкой заголовка;

  • Frame (string title) – записывает аргумент title в строку заголовка.

Методы класса Frame осуществляют доступ к элементам окна, но не забывайте, что класс Frame наследует около двухсот методов классов Component, Container и window. В частности, наследуется менеджер размещения по умолчанию – BorderLayout.

Кроме событий класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent , при изменении размеров окна, его перемещении или удалении с экрана, а также показа на экране происходит событие windowEvent.

Листинг 10.5. Создание двух окон

import j ava.awt.* ;

import java.awt.event.*;

class TwoFrames{

public static void main(String[] args){

Fr1 fl=newFr1(" Основное окно");

Fr2 f2=newFr2(" Второе окно");

}

}

classFr1extendsFrame{

Fr1(String s){

super(s);

setLayout(null);

Font f = newFont("Serif", Font.BOLD, 15);

setFont(f);

Label l = newLabel("Это главное окно", Label.CENTER);

l.setBounds(10, 30, 180, 30);

add(l);

setSize(200, 100);

setVisible(true);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvent ev){

System.exit(0);

}

});

}

}

classFr2extendsFrame{

Fr2(String s){

super(s);

setLayout(null) ;

Font f = newFont("Serif", Font.BOLD, 15);

setFont(f);

Label l = newLabel("Это второе окно", Label.CENTER);

l.setBounds(10, 30, 180, 30);

add(l);

setBounds(50, 50, 200, 100);

setVisible(true);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvent ev) {

dispose ();

}

});

}

}

Рис. 10.5. Программа с двумя окнами

Контейнер Dialog

Контейнер Dialog – это окно обычно фиксированного размера, предназначенное для ответа на сообщения приложения. Оно автоматически регистрируется в оконном менеджере графической оболочки, следовательно, его можно перемещать по экрану, менять его размеры. Но окно типа Dialog, как и его суперкласс – окно типа window, – обязательно имеет владельца owner, который указывается в конструкторе. Окно типа Dialog может быть модальным (modal), в котором надо обязательно выполнить все предписанные действия, иначе из окна нельзя будет выйти.

В классе семь конструкторов. Из них:

  • Dialog (Dialog owner) – создает немодальное диалоговое окно с пустой строкой заголовка;

  • Dialog (Dialog owner, string title) – создает немодальное диалоговое-окно со строкой заголовка title;

  • Dialog(Dialog owner, String title, boolean modal) – создает диалоговое окно, которое будет модальным, если modal == true.

Четыре других конструктора аналогичны, но создают диалоговые окна, принадлежащие окну типа Frame:

Dialog(Frame owner)

Dialog(Frame owner. String title)

Dialog(Frame owner, boolean modal)

Dialog(Frame owner, String title, Boolean modal)

Среди методов класса интересны методы: isModal (), проверяющий состояние модальности, и setModal(boolean modal), меняющий это состояние.

Кроме Событий класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent , при изменении размеров окна, его перемещении или удалении с экрана, а также показа на экране происходит событие windowEvent.

Листинг 10.6. Модальное окно доступа

import j ava.awt.*;

import Java.awt.event.*;

classLoginWinextendsDialog{

LoginWin(Frame f, String s){

super(f, s,true);

setLayout(null);

setFont(newFont("Serif", Font.PLAIN, 14));

Label l1 = newLabel("Ваше имя:", Label.RIGHT);

l1.setBounds(20, 30, 70, 25); add(l1);

Label l2 = newLabel("Пароль:", Label.RIGHT);

l2.setBounds(20, 60, 70, 25); add(l2);

TextField tfl = newTextField(30);

tfl.setBounds(100, 30, 160, 25); add(tfl);

TextField tf2 = newTextField(30);

tf2.setBounds(100, 60, 160, 25); add(tf2);

tf2.setEchoChar('*');

Button bl = newButton("Применить");

bl.setBounds(50, 100, 100, 30); add(bl);

Button b2 = newButton("Отменить");

b2.setBounds(160, 100, 100, 30); add(b2);

setBounds(50, 50, 300, 150); } }

classMy_winextendsFrame{

My_win(String s){

super(s);

setLayout(null); setSize(200, 100);

setVisible(true);

Dialog d =newLoginWin(this,"Окно входа"); d.setVisible(true);

}

publicstaticvoidmain(String[] args){

Frame f = newMy_win(" Окно-владелец");

f.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvent ev){

System.exit(0);

}

});

}

}

Рисунок. 1.6. Модальное окно доступа

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]