Компоненты и контейнеры

Компонент – элемент графического интерфейса, который можно использовать независимо от других: кнопка, строка меню, текстовое поле, полоса прокрутки, переключатель.

Контейнер – компонент, который предназначен для хранения других элементов.

Компонент должен обязательно помещен в контейнер (он знает как их рисовать). (Бывает невидимым). Поэтому компонент должен быть помещен в контейнер. Контейнер – тоже компонент, поэтому может содержать другие контейнеры (иерархия контейнеров). В верхней части иерархии – контейнер верхнего уровня. Он не входит в другой контейнер.

1. Контейнеры верхнего уровня Swing-тяжелые.

Любая иерархия начинается с них.

2. Легкие контейнеры – наследники JComponent: JPanel, JScrollPane, JRootPane. Они могут содержаться внутри другого контейнера (для создания групп связанных компонентов и помещения их внутрь внешнего контейнера).

3. Легкие компоненты Swing- производятся от JComponent (кроме контейнеров верхнего уровня). Swing – лежит в пакете javax.swing, классы начинаются с буквы J:

JButton, JList, JCheck, JFrame, JLabel, JTextArea, JTextField, JMenu, JTree, JTable.Построены по архитектуре MVC – Mode l-View-Control

V и C объединены вместе и называются-делегат. Model (хранит состояние объекта) – UI Delegate (отвечает за внешний вид). Это архитектура разделеной модели (модель-делегат).

Окно верхнего уровня – фрейм.

В AWT – Frame;

В Swing – JFrame.

Пример простейшего окна при использовании наследования.

import javax.swing.*

class SimpleFrame extends JFrame{//класс определяет ГИП

public SimpleFrame (){ //конструктор

setSize (300,200); //размеры окна- по умолч.размер 0 Х 0

}

}

public class SimpleFrame Test {// класс запускает программу

public static void main (String [] args) {

SimpleFrame frame1 = new SimpleFrame ();

frame1.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

frame1.setVisible (true); //после этого запустится thread GUI.

frame.setLocation (100,200);

}

}//закончился основной поток, поток ГИП продолжает работать

Строка заголовка и пиктограммы размеров окна отображаются ОС. Внутренность окна – библиотекой Swing. Варианты:

- метод main () может быть внутри класса JFrame. (нежелательно).

- все, кроме создания фрейма (new SimpleFrame ()) может быть в конструкторе (нежелательно).

- может использоваться не наследование, а композиция:

class SwingDemo{

SwingDemo () {//конструктор

JFrame jframe = new JFrame();

jframe.setSize (300,200);

jframe.setVisible (true);

jframe.setDefault......

}

public static void main (…) {

new Swing Demo ();

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: