- •Ооп в Java. Наследование
- •Ооп в Java. Классы и объекты. Синтаксис. Понятие членов класса.
- •Ооп в Java. Интерфейсы. Синтаксис, допустимые операции.
- •3. Отказ от перегрузки операторов в Java
- •Коллекция LinkedList и подобные
- •Gui Swing. Работа с компоновщиком GridBagLayout
- •Gui Swing. Рисование двумерной графики
- •Gui Swing. Компоненты jFrame и Jpanel. Свойства, методы. Привязка и обработка событий.
- •Gui Swing. Компоненты jTextField и jButton. Свойства, методы. Привязка и обработка событий.
- •Gui Swing. Компоненты jCheckBox, jComboBox. Привязка и обработка событий.
- •Gui Swing. Меню.
- •Gui Swing. События.
Gui Swing. Работа с компоновщиком GridBagLayout
Так же как и рассмотренный нами ранее режим GridLayout, режим GridBagLayout предполагает размещение компонент в ячейках некоторой таблицы заданной размерности. Вот наиболее важные отличия между этими режимами:
в режиме GridLayout размещаемые компоненты изменяют свои размеры таким образом, чтобы заполнить ячейки таблицы, в которых они располагаются. Режим GridBagLayout позволяет контролировать этот процесс, причем при необходимости вы можете задать стратегию такого изменения или отменить его вовсе;
в режиме GridLayout каждый компонент занимает только одну ячейку. Что же касается режима GridBagLayout, то здесь компоненты могут занимать несколько смежных ячеек в строках или столбцах;
при изменении размеров контейнера во время работы приложения при использовании режима GridLayout все компоненты неизбежно также будут изменять свои размеры. Это далеко не всегда удобно. В режиме GridBagLayout вы можете управлять стратегией изменения размеров компонент или отменить такое изменение.
Билет 17.
Обобщения. Ограниченные шаблоны.
Поскольку методы могут принимать в качестве аргументов объекты классов, возникает вопрос — «Что делать, если в метод передается объект обобщенного класса?». Для этого применяется конструкция «шаблон аргумента».
Типы в шаблоне аргумента можно также ограничивать, задавая конкретный тип,
Классу и подклассам которого должет соответствовать тип, подставляемый в шаблон аргумента.
//Метод будет работать только с объектом обобщенного
Класса Number и его подклассами
public Double getMax(InClass<? Extends Number> ic) {
...
}
Можно использовать для ограничения и пользовательские классы
class A{}
class B extends A{}
class D{}
class C<T> {
T obj;
C(T obj) { this.obj = obj; }
public void test(C<? extends A> obj) { ... }
}
A a = new A(); B b = new B(); D d = new D();
C<A> c1 = new C<A>(a);
C<B> c2 = new C<B>(b);
C<D> c3 = new C<D>(d);
c1.test(c1); c1.test(c2);
c2.test(c1); c2.test(c2);
//Будет ошибка
//c3.test(c3); c1.test(c3); c2.test(c3);
GUI Swing. Группировка компонентов.
Группировка осуществляется с помощью панели.
Панель JPanel — это элемент управления, представляющий собой прямоугольное пространство, на котором можно размещать другие элементы. Элементы добавляются и удаляются методами, унаследованными от класса Container.
Билет 18.
Обобщенные конструкторы.
Конструкторы также могут иметь обобщенную форму. Обобщенные конструкторы могут быть определены как в обобщенных, так и в обычных классах.
Объявление обобщенного конструктора имеет следующий порядок:
1. Сначала приводится описание обобщенного типа
2. Затем имя конструктора
3. Затем аргументы обобщенные и обычные
public class TSumm {
private Double summ;
<T extends Float> TSumm(T[] mass) {
System.out.println("Вещественное одинарной точности");
this.summ = this.checkSumm(mass);
}
<T extends Integer> TSumm(T[] mass) {
System.out.println("Целое");
this.summ = this.checkSumm(mass);
}
private <T extends Number> Double checkSumm(T[] mass) {
Double summ = 0D;
for(T temp: mass) {
summ += temp.doubleValue();
}
return summ;
}
public Double getSumm() {
return this.summ;
}
}