События
Кроме событий класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent, при изменении размеров окна, его перемещении или удалении с экрана, а также показа на экране происходит событие windowEvent.
Программа листинга 10.5 создает два окна типа Frame, в которые помещаются строки – метки Label. При закрытии основного окна щелчком по соответствующей кнопке в строке заголовка или комбинацией клавиш ALT + F4 выполнение программы завершается обращением к методу system.exit (0), и закрываются оба окна. При закрытии второго окна происходит обращение к методу dispose (), и закрывается только это окно.
Листинг 10.5. Создание двух окон.
import java.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 <strong>=</strong> 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 (); } }); } }
На рис. 10.5 показан вывод этой программы. Взаимное положение окон определяется оконным менеджером операционной системы и может быть не таким, какое показано на рисунке.
Рис. 10.5. Программа с двумя окнами