Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Богомазов шпоры.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.32 Mб
Скачать

Классы, вложенные в методы (локальные внутренние классы)

  1. Доступен только внутри метода.

  2. Имеет доступ к параметрам и локальным переменным этого метода, но они должны быть final. Т.к. время жизни объекта лок. внутр. класса может превышать время жизни локальных переменных, то он получает их копии и они не должны после этого меняться.

Анонимные внутренние классы

Если нужно создать один-единственный объект некоторого класса, то этому классу можно не присваивать имени.

Пусть у нас есть класс А. Надо создать класс В порожденный от А.

Обычный способ:

class B extends A {…}

A a = new B();

С анонимным внутренним классом:

A a = new A() {//определ. класса, который наследует класс А опис. поля и

//методы. Конструктор базового класса-по умолчанию

};// обязательно ;(точка с запятой)

Статические внутренние классы (nested)

В объекте обычно внутреннего класса есть ссылка на объект внешнего класса.

Поэтому мы создаем: obj.newInner();

У статического такой ссылки нет.

Поэтому:

- для его создания не нужен объект внешнего класса.

- из объекта статического внутреннего класса нельзя обращаться к нестатическим членам внешнего (а только к статическим).

- у нестатических внешних классов не может быть статических членов. У статических – могут.

2.9 Платформа JAVA; організація графічного інтерфейсу користувача. Компоненти і контейнери, Диспетчери компонування. Механізми обробки подій.

Графический интерфейс пользователя (ГИП)(GUI)

Библиотека классов AWT (Abstract Window Toolkit). Основана на родных графических компонентах каждой ОС. (Peer – пиры – зависящие от платформы эквиваленты компонентам Java). Компоненты, основанные на peer – интерфейсах – тяжеловесные, тяжелые (heavy). Написаны на С++. Выглядит по разному в разных ОС.

Потом добавили компоненты, написанные на Java – легкие, легковесные (Lightweight). Выглядят везде одинаково. Сохраняют вид и поведение (Look and Feel) в любых ОС.

Библиотека Swing – начиная с JAVA 1.2 (JAVA 2).Основана на легких компонентах. Они могут менять вид (pluggable Look and Feel) plaf. Фирменный вид – ”Metal” (“приборный cтиль”, Java L&F).

Swing + AWT+Java 2D+…=JFC (Java Fundation Classes) библиотека графических средств JAVA.

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

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

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

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

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.

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

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

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

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