- •724 Содержание
- •Глава 6. Интерфейсы и внутренние классы 139
- •У казания и ответы
- •Вопрос 3.2.
- •Вопрос 8.2.
- •Вопрос 8.3.
- •Вопрос 14.2.
- •Вопрос 21.5.
- •Ч асть 1. Основы языка java
- •Глава 1 введение в классы и объекты Основные понятия ооп
- •Язык Java
- •Нововведения версий 5.0 и 6.0
- •Простое приложение
- •Классы и объекты
- •Сравнение объектов
- •Консоль
- •Простой апплет
- •Задания к главе 1 Вариант a
- •Вариант b
- •Тестовые задания к главе 1
- •Вопрос 1.5.
- •Г лава 2 типы данных и операторы
- •Базовые типы данных и литералы
- •Документирование кода
- •Операторы
- •Классы-оболочки
- •Операторы управления
- •Массивы
- •Класс Маth
- •Управление приложением
- •Задания к главе 2 Вариант a
- •Вариант в
- •Тестовые задания к главе 2
- •Переменные класса и константы
- •Ограничение доступа
- •Конструкторы
- •Статические методы и поля
- •Модификатор final
- •Абстрактные методы
- •Модификатор native
- •Модификатор synchronized
- •Логические блоки
- •Перегрузка методов
- •Параметризованные классы
- •Параметризованные методы
- •Методы с переменным числом параметров
- •Перечисления
- •1 : Fpmi : Балаганов
- •Аннотации
- •Задания к главе 3 Вариант a
- •Вариант b
- •Тестовые задания к главе 3
- •Использование final
- •Использование super и this
- •Переопределение методов и полиморфизм
- •Методы подставки
- •Полиморфизм и расширяемость
- •Статические методы и полиморфизм
- •Абстракция и абстрактные классы
- •Класс Object
- •Клонирование объектов
- •“Сборка мусора” и освобождение ресурсов
- •Задания к главе 4 Вариант a
- •Вариант в
- •Тестовые задания к главе 4
- •Вопрос 4.7.
- •Г лава 5 проектирование классов Шаблоны проектирования grasp
- •Шаблон Expert
- •Шаблон Creator
- •Шаблон Low Coupling
- •Шаблон High Cohesion
- •Шаблон Controller
- •Шаблоны проектирования GoF
- •Порождающие шаблоны
- •К порождающим шаблонам относятся:
- •Шаблон Factory
- •Шаблон AbstractFactory
- •Шаблон Builder
- •Шаблон Singleton
- •Структурные шаблоны
- •К структурным шаблонам относятся:
- •Шаблон Bridge
- •Шаблон Decorator
- •Шаблоны поведения
- •К шаблонам поведения относятся:
- •Шаблон Command
- •Шаблон Strategy
- •Шаблон Observer
- •Тестовые задания к главе 5
- •Статический импорт
- •Внутренние классы
- •Внутренние (inner) классы
- •Вложенные (nested) классы
- •Анонимные (anonymous) классы
- •Задания к главе 6 Вариант а
- •Вариант b
- •Вариант c
- •Тестовые задания к главе 6
- •Вопрос 6.5.
- •Класс String
- •Классы StringBuilder и StringBuffer
- •Форматирование строк
- •Лексический анализ текста
- •Регулярные выражения
- •Интернационализация текста
- •Интернационализация чисел
- •Интернационализация дат
- •3 Апрель 2006 г.
- •Задания к главе 7 Вариант a
- •Вариант b
- •Тестовые задания к главе 7
- •Оператор throw
- •Ключевое слово finally
- •Собственные исключения
- •Наследование и исключения
- •Отладочный механизм assertion
- •Задания к главе 8
- •Байтовые и символьные потоки ввода/вывода
- •Предопределенные потоки
- •Сериализация объектов
- •Консоль
- •Класс Scanner
- •Архивация
- •Задания к главе 9 Вариант a
- •Вариант b
- •Вариант с
- •Тестовые задания к главе 9
- •Множества
- •Карты отображений
- •14El - найден по ключу '12'
- •Унаследованные коллекции
- •Класс Collections
- •Класс Arrays
- •Задания к главе 10 Вариант a
- •Вариант b
- •Тестовые задания к главе 10
- •Апплеты
- •Задания к главе 11
- •Тестовые задания к главе 11
- •Классы-адаптеры
- •Задания к главе 12
- •Тестовые задания к главе 12 Вопрос 12.1.
- •Вопрос 12.2.
- •Вопрос 12.3.
- •Вопрос 12.4.
- •Вопрос 12.5.
- •Г лава 13 элементы компоновки и управления
- •Менеджеры размещения
- •Элементы управления
- •Визуальные компоненты JavaBeans
- •Задания к главе 13 Вариант а
- •Вариант b
- •Жизненный цикл потока
- •Управление приоритетами и группы потоков
- •Управление потоками
- •Потоки-демоны
- •Потоки в графических приложениях
- •Методы synchronized
- •Инструкция synchronized
- •Состояния потока
- •Потоки в j2se 5
- •Задания к главе 14 Вариант а
- •Вариант b
- •Тестовые задания к главе 14
- •Вопрос 14.1.
- •Вопрос 14.2.
- •Вопрос 14.3.
- •Вопрос 14.4.
- •Вопрос 14.5.
- •Г лава 15 сетевые программы Поддержка Интернет
- •Сокетные соединения по протоколу tcp/ip
- •Многопоточность
- •Датаграммы и протокол udp
- •Задания к главе 15 Вариант а
- •Вариант b
- •Древовидная модель
- •Элементы таблицы стилей
- •Задания к главе 16 Вариант а
- •Тестовые задания к главе 16
- •Запуск контейнера сервлетов и размещение проекта
- •Первая jsp
- •Взаимодействие сервлета и jsp
- •Задания к главе 17 Вариант а
- •Вариант b
- •Интерфейс ServletContext
- •Интерфейс ServletConfig
- •Интерфейсы ServletRequest и HttpServletRequest
- •Интерфейсы ServletResponse и HttpServletResponse
- •Обработка запроса
- •Многопоточность
- •Электронная почта
- •Задания к главе 18 Вариант а
- •Вариант b
- •Стандартные элементы action
- •Неявные объекты
- •Демонстрация работы тегов c:forEach, c:choose, c:when, c:otherwise
- •Данная страница демонстрирует работу тегов
- •Включение ресурсов
- •Обработка ошибок
- •Технология взаимодействия jsp и сервлета
- •Задания к главе 19
- •Вариант а
- •Вариант b
- •Субд MySql
- •Простое соединение и простой запрос
- •Метаданные
- •Подготовленные запросы и хранимые процедуры
- •Транзакции
- •Id студента: 83, Petrov Внесены данные в students: 83, Petrov Внесены данные в course: 83, xml Данные внесены - транзакция завершена
- •Точки сохранения
- •Пул соединений
- •Задания к главе 20 Вариант а
- •Вариант b
- •Обработка событий
- •Фильтры
- •Задания к главе 21 Вариант а
- •Вариант b
- •Вопрос 21.5.
- •Вопрос 21.6.
- •Г лава22 пользовательские теги
- •Простой тег
- •Тег с атрибутами
- •Тег с телом
- •Элементы action
- •Задания к главе 22 Вариант а
- •Вариант b
- •П риложение 2
- •Включение скриптов на языке JavaScript в html-код
- •Отладка скриптов JavaScript
- •Типы данных
- •Специальные числа
- •Булев тип
- •Переменные типа Undefined и Null
- •Массивы
- •Операторы и выражения
- •Оператор with
- •Оператор switch
- •Метод eval()
- •Функции
- •Передача параметров по значению и по ссылке
- •Глобальные и локальные переменные
- •Пользовательские объекты
- •Прототипы
- •Встроенные объекты Array, Date, Math Объект Array
- •Объект Date
- •Объект Math
- •Объекты window и document
- •Создание новых узлов
- •Добавление новых узлов в документ
- •Удаление и замена узлов в документе
- •Использование каскадных таблиц стилей в dom
- •Свойство элемента innerHtml и outerHtml
- •Динамическое назначение событий
- •Ключевое слово this
- •П риложение3
- •Проектная модель
- •Uml как программный язык
- •Нотации и метамодель
- •Диаграммы, которые ниже будут рассмотрены с разной степенью детализации:
- •Свойства
- •Множественность
- •Операторы
- •П риложение 4 базы данных и язык sql
- •Реляционные субд Модель данных в реляционных субд
- •Нормализация модели данных
- •Язык sql
- •Команды sql
- •Команды определения структуры данных (DataDefinitionLanguage–ddl)
- •Команды манипулирования данными (Data Manipulation Language – dml)
- •Команды управления транзакциями (TransactionControlLanguage–tcl)
- •Команды управления доступом (DataControlLanguage–dcl)
- •Работа с командами sql
- •Ключевое слово distinct
- •Секция from, логическое связывание таблиц
- •Секция where
- •Секция orderby
- •Групповые функции
- •Секция group by
- •Секция having
- •Изменение данных
- •Команда insert
- •Команда delete
- •Команда update
- •Определение структуры данных Команда createtable
- •Команда droptable
- •П риложение5
- •П риложение 6
- •П риложение7 журнал сообщений (logger)
- •П риложение 8
- •Портлеты
Вопрос 12.3.
Что произойдет при попытке компиляции и запуска следующего кода?
import java.awt.*; import java.awt.event.*; public class Quest3 extends Frame
implementsWindowListener {
public Quest3(){ setSize(300,300); setVisible(true); }
public void windowClosing(WindowEvent e){ System.exit(0); } public static void main(String args[]){ Quest3 q = new Quest3(); } }
ошибка компиляции;
компиляция и запуск с выводом пустого фрейма;
компиляция без запуска;
ошибка времени выполнения.
Вопрос 12.4.
Какие из приведенных классов являются классами-адаптерами?
WindowAdapter;
WindowsAdapter;
AdjustmentAdapter;
ItemAdapter;
FocusAdapter.
Вопрос 12.5.
Выберите из предложенных названий интерфейсы Event Listener.
MouseMotionListener;
WindowListener;
KeyTypedListener;
ItemsListener.
Г лава 13 элементы компоновки и управления
В первых версиях Java (1.0.x) были созданы элементы управления AWT, такие как метки, кнопки, списки, текстовые поля, предоставляющие пользователю различные способы управления приложением. Эти элементы, наследуемые от абстрактного класса java.awt.Component и называемые также компонентами, были частично зависимы от аппаратной платформы и не в полной мере объектно-ориентированы по способу использования. Развитие парадигмы “write once, run everywhere” (“написать однажды, запускать везде”) привело к разработке таких компонентов (библиотеки Swing), которые были не привязаны к конкретной платформе. Эти классы доступны разработчикам в составе как JDK, так и отдельного продукта JFC (Java Foundation Classes). Причем для совместимости со старыми версиями JDK компоненты из AWT остались нетронутыми, хотя компания JavaSoft, отвечающая за выпуск JDK, рекомендует не смешивать в одной и той же программе старые и новые компоненты. Кроме пакета Swing, библиотека JFC содержит большое число компонентов JavaBeans, которые могут использоваться как для ручной, так и для визуальной разработки пользовательских интерфейсов.
Менеджеры размещения
Перед использованием управляющих компонентов (например, кнопок) их надо расположить на форме в нужном порядке. Вместо ручного расположения применяются менеджеры размещения, определяющие способ, который панель использует для задания порядка размещения управляющего элемента на форме. Менеджеры размещения контролируют, как выполняется позиционирование компонентов, добавляемых в окна, а также их упорядочение. Если пользователь изменяет размер окна, менеджер размещения переупорядочивает компоненты в новой области так, чтобы они оставались видимыми и в то же время сохранили свои позиции относительно друг друга.
Менеджер размещения представляет собой один из классов FlowLayout, BorderLayout, GridLayout, CardLayout, BoxLayout, реализующих интерфейс LayoutManager, устанавливающий размещение.
Класс FlowLayout – менеджер поточной компоновки. При этом компоненты размещаются от левого верхнего угла окна, слева направо и сверху вниз, как и обычный текст. Этот менеджер используется по умолчанию при добавлении компонентов в апплеты. При использовании библиотеки AWT менеджер FlowLayout представляет собой класс, объявленный следующим образом:
public class FlowLayout extends Object
implements LayoutManager, Serializable { }
В следующем примере демонстрируются возможности поточной компоновки различных элементов управления.
/* пример # 1 : поточная компоновка по центру: FlowLayoutEx.java */
package chapt13;
import java.awt.*;
import javax.swing.*;
public class FlowLayoutEx extends JApplet {
private Component c[] = new Component[9];
public void init() {
String[] msg =
{ "Метка 1", "Метка 2", "Метка 3" };
String[] str =
{ "Кнопка 1", "Кнопка 2", "Кнопка 3" };
String[] txt = {"Текст 1", "Текст 2", "Текст 3"};
//установка менеджера размещений
setLayout(new FlowLayout());
setBackground(Color.gray);
setForeground(Color.getHSBColor(1f, 1f, 1f));
for (int i = 0; i < c.length/3; i++) {
c[i] = new JButton(str[i]);
add(c[i]);
c[i + 3] = new JLabel(msg[i]);
add(c[i + 3]);
c[i+6] = new JTextField(txt[i]);
add(c[i + 6]);
}
setSize(450, 150);
}
}
Перегружаемый метод add(Component ob), определенный в классе java.awt.Container (подклассе Component), добавляет компоненты JButton, JLabel, JTextField к окну и прорисовывает их всякий раз, когда окно отображается на экран.
Метод setLayout(LayoutManager mgr) устанавливает менеджер размещения для данного контейнера. Результаты работы апплета приведены на рисунке.
Рис. 13.1. Размещение компонентов FlowLayout
Менеджер GridLayout разделяет форму на заданное количество рядов и колонок. В отличие от него компоновка BoxLayout размещает некоторое количество компонентов по вертикали или горизонтали. На способ расположения компонентов изменение размеров формы не влияет.
/* пример # 2 : компоновка в табличном виде: GridLayoutEx.java */
package chapt13;
import javax.swing.*;
import java.awt.*;
public class GridLayoutEx extends JApplet {
private Component b[] = new Component[7];
public void init() {
setLayout(new GridLayout(2, 4));/*две строки,
четыре столбца*/
for (int i = 0; i < b.length; i++)
add((b[i] = new JButton("(" + i + ")")));
}
}
Рис. 13.2. Размещение компонентов GridLayout
Менеджер BorderLayout позволяет позиционировать элементы и группы из них в областях фиксированного размера, граничащих со сторонами фрейма, которые обозначаются параметрами сторонами света: NORTH, SOUTH, EAST, WEST. Остальное пространство обозначается как CENTER.
/* пример # 3 : фиксированная компоновка по областям:
BorderGridLayoutDemo.java */
package chapt13;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Container;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JToggleButton;// «западающая» кнопка
public class BorderGridLayoutDemo extends JFrame {
public BorderGridLayoutDemo() {
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(new JToggleButton("--1--"), BorderLayout.WEST);
c.add(new JToggleButton("--2--"), BorderLayout.SOUTH);
c.add(new JToggleButton("--3--"), BorderLayout.EAST);
JPanel jPanel = new JPanel();
c.add(jPanel, BorderLayout.NORTH);
jPanel.setSize(164, 40);
jPanel.setLayout(new GridLayout(2, 4));
for (int i = 0; i < 7; i++)
jPanel.add(new JButton("" + i));
}
public static void main(String[] args) {
BorderGridLayoutDemo fr =
new BorderGridLayoutDemo();
fr.setSize(300, 200);
fr.setTitle("Border & Grid Layouts Example");
fr.setDefaultCloseOperation(EXIT_ON_CLOSE);
fr.setVisible(true);
}
}
Рис. 13.3. Размещение компонентов BorderLayout и GridLayout
Компоновка BoxLayout позволяет группировать элементы в подобластях фрейма в строки и столбцы. Возможности класса Box позволяют размещать компоненты в рамке, ориентированной горизонтально или вертикально.
/* пример # 4 : компоновка в группах с ориентацией: BoxLayoutDemo.java */
package chapt13;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
public class BoxLayoutDemo extends JFrame {
public BoxLayoutDemo() {
Container c = getContentPane();
setBounds(20, 80, 300, 300);
c.setLayout(new BorderLayout());
Box row = Box.createHorizontalBox();
for (int i = 0; i < 4; i++) {
JButton btn = new JButton("Кн " + i);
btn.setFont(new Font("Tahoma", 1, 10 + i * 2));
row.add(btn);
}
c.add(row, BorderLayout.SOUTH);
JPanel col = new JPanel();
col.setLayout(
new BoxLayout(col, BoxLayout.Y_AXIS));
col.setBorder(
new TitledBorder(new EtchedBorder(), "Столбец"));
for (int i = 0; i < 4; i++) {
JToggleButton btn =
new JToggleButton("Кнопка " + i);
col.add(btn);
}
c.add(col, BorderLayout.WEST);
}
public static void main(String[] args) {
BoxLayoutDemo frame = new BoxLayoutDemo();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Рис. 13.4. Размещение компонентов BoxLayout и Box
Для того чтобы располагать компоненты в произвольных областях фрейма, следует установить для менеджера размещений значение null и воспользоваться методом setBounds().
/* пример # 5 : произвольное размещение: NullLayoutEx.java */
package chapt13;
import java.awt.Container;
import javax.swing.*;
public class NullLayoutEx extends JFrame {
public NullLayoutEx() {
Container c = getContentPane();
//указание размеров фрейма
setBounds(20, 80, 300, 300);
c.setLayout(null);
JButton jb = new JButton("Кнопка");
//указание координат и размеров кнопки
jb.setBounds(200, 50, 90, 40);
c.add(jb);
JTextArea jta = new JTextArea();
//указание координат и размеров текстовой области
jta.setBounds(10, 130, 180, 70);
jta.setText("Здесь можно вводить текст");
c.add(jta);
}
public static void main(String args[]) {
NullLayoutEx nl = new NullLayoutEx();
nl.setDefaultCloseOperation(EXIT_ON_CLOSE);
nl.setVisible(true);
}
}
Рис. 13.5. Произвольное размещение компонентов