Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Компоненты и контейнеры
Компонент – элемент графического интерфейса, который можно использовать независимо от других: кнопка, строка меню, текстовое поле, полоса прокрутки, переключатель. Контейнер – компонент, который предназначен для хранения других элементов. Компонент должен обязательно помещен в контейнер (он знает как их рисовать). (Бывает невидимым). Поэтому компонент должен быть помещен в контейнер. Контейнер – тоже компонент, поэтому может содержать другие контейнеры (иерархия контейнеров). В верхней части иерархии – контейнер верхнего уровня. Он не входит в другой контейнер.
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 (); } }
|