Контейнер Framе

 

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

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

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

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

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

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

 

События

 

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

Программа листинга 10.5 создает два окна типа Frame, в которые помещаются строки — метки Label. При закрытии основного окна щелчком по соответствующей кнопке в строке заголовка или комбинацией клавиш <Alt>+<F4> выполнение программы завершается обращением к методу system.exit (0), и закрываются оба окна. При закрытии второго окна происходит обращение к методу dispose (), и закрывается только это окно.

 

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

import j ava.awt.* ; 

import java.awt.event.*;

class TwoFrames{

public static void main(String[] args){ 

Fr1 fl = new Frl(» Основное окно»); 

Fr2 f2 = new Fr2(» Второе окно»); 

}

class Frl extends Frame{ 

Fr1(String s){ 

super(s); 

setLayout(null);

Font f = new Font(«Serif», Font.BOLD, 15); 

setFont(f);

Label 1 = new Label(«Это главное окно», Labe1.CENTER); 

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

add(l);

setSize(200, 100); 

setvisible(true); 

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev){

System.exit (0); 

}

});

}

}

class Fr2 extends Frame{ Fr2(String s){

super(s);

setLayout(null) ;

Font f = new Font(«Serif», Font.BOLD, 15);

setFont(f);

Label I = new Label(«Это второе окно», Label.CENTER);

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

add(l);

setBounds(50, 50, 200, 100);

setvisible(true);

addWindowListener(new WindowAdapter(){ 

public void windowClosing(WindowEvent ev) { 

dispose ();

}

}); 

}