С. Сухов - Основы программирования на Java
- Название:Основы программирования на Java
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
С. Сухов - Основы программирования на Java краткое содержание
Учебное пособие разработано в соответствии с программой курса «Информатика» и предназначено для студентов радиотехнического факультета, но может использоваться и студентами других специальностей. Рассматриваются вопросы программирования на языке Java.
Направлено на закрепление знаний по курсу «Информатика», читаемого по специальности 210406 «Сети связи и системы коммутации». Учебное пособие подготовлено на кафедре «САПР».
Основы программирования на Java - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
12.2. Класс Container
Container — это абстрактный подкласс класса Component, определяющий дополнительные методы, которые дают возможность помещать в него другие компоненты, что дает возможность построения иерархической системы визуальных объектов. Container отвечает за расположение содержащихся в нем компонентов с помощью интерфейса LayoutManager.
Основная идея использования объектов Canvas в том, что они являются семантически свободными компонентами. Вы можете придать объекту Canvas любое поведение и любой желаемый внешний вид. Его имя подразумевает, что этот класс является пустым холстом, на котором вы можете «нарисовать» любой компонент — такой, каким вы его себе представляете.
Произведем от Canvas подкласс GrayCanvas, который будет просто закрашивать себя серым цветом определенной насыщенности. Наш апплет будет создавать несколько таких объектов, каждый со своей интенсивностью серого цвета.
import java.awt.*;
import java.applet. *;
class GrayCanvas extends Canvas {
Color gray;
public GrayCanvas(float g) {
gray = new Color(g, g, g);
}
public void paint(Graphics g) {
Dimension size = size();
g.setColor(gray);
g.fillRect(0,0, size.width, size.height);
g.setColor(Color.black);
g.drawRect(0, 0, size.width-1, size.height-1);
}
}
public class PanelDemo extends Applet {
static final int n = 4;
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
for (int i = 0; i < n; i++) {
for (int j = 0; j < ri; j++) {
float g = (i * n + j) / (float) (n * n);
Canvas с = new GrayCanvas(g);
add(c);
c.resize(width / n, height / n);
c.move(i * width / n, j * height / n);
}
}
Мы устанавливаем размер каждого из объектов Canvas на основе значения, полученного с помощью метода size, который возвращает объект класса Dimension. Обратите внимание на то, что для размещения объектов Canvas в нужные места используются методы resize и move. Такой способ станет очень утомительным, когда мы перейдем к более сложным компонентам и более интересным вариантам расположения. А пока для выключения упомянутого механизма использован вызов метода setLayout(null).
Функциональность класса Label сводится к тому, что он знает, как нарисовать объект String — текстовую строку, выровнив ее нужным образом. Шрифт и цвет, которыми отрисовывается строка метки, являются частью базового определения класса Component. Для работы с этими атрибутами предусмотрены пары методов getFont/setFont и getForeground/setForeground. Задать или изменить текст строки после создания объекта с помощью метода setText. Для задания режимов выравнивания в классе Label определены три константы — LEFT, RIGHT и CENTER. Ниже приведен пример, в котором создаются три метки, каждая — со своим режимом выравнивания.
import java.awt.*;
import java.applet. *;
public class LabelDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
Label left = new LabelC'Left", LabeLLEFT);
Label right = new Label("Right", LabeLRIGHT);
Label center = new Label("Center", Label.CENTER);
add(left);
add(right);
add(center);
left.reshape(0, 0, width, height / 3);
right.reshape(0, height / 3, width, height / 3);
center.reshape(0,2 * height / 3, width, height / 3);
}
}
На этот раз, чтобы одновременно переместить и изменить размер объектов Label, мы использовали метод reshape. Ширина каждой из меток равна полной ширине апплета, высота— 1/3 высоты апплета.
Объекты-кнопки помечаются строками, причем эти строки нельзя выравнивать подобно строкам объектов Label (они всегда центрируются внутри кнопки). Позднее в данной главе речь пойдет о том, как нужно обрабатывать события, возникающие при нажатии и отпускании пользователем кнопки. Ниже приведен пример, в котором создаются три расположенные по вертикали кнопки.
import java.awt.*;
import j ava.applet. *;
public class ButtonDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = biteger.parseInt(getParameter("height"));
Button yes = new Button("Yes");
Button no = new Button("No");
Button maybe = new Button("Undecided");
add(yes);
add(no);
add(maybe);
yes.reshape(0,0, width, height / 3);
no.reshape(0, height / 3, width, height / 3);
maybe.reshape(0,2 * height / 3, width, height / 3);
}
}
Класс Checkbox часто используется для выбора одной из двух возможностей. При создании объекта Checkbox ему передается текст метки и логическое значение, чтобы задать исходное состояние окошка с отметкой. Программно можно получать и устанавливать состояние окошка с отметкой с помощью методов getState и setState. Ниже приведен пример с тремя объектами Checkbox, задаваемое в этом примере исходное состояние соответствует отметке в первом объекте.
import java.awt.*;
import j ava.applet. *;
public class CheckboxDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
Checkbox win1 = new Checkbox("Windows XP", null, true);
Checkbox win2 = new Checkbox("Windows 2000");
Checkbox win3 = new CheckboxfWindows 98");
add(win1);
add(win2);
add(win3);
win1.reshape(0,0, width, height / 3);
win2.reshape(0, height / 3, width, height / 3);
win3.reshape(0,2 * height / 3, width, height / 3);
}
}
Второй параметр конструктора Checkbox (в предыдущем примере мы ставили там null) используется для группирования нескольких объектов Checkbox. Для этого сначала создается объект CheckboxGroup, затем он передается в качестве параметра любому количеству конструкторов Checkbox, при этом предоставляемые этой группой варианты выбора становятся взаимоисключающими (только один может быть задействован). Предусмотрены и методы, которые позволяют получить и установить группу, к которой принадлежит конкретный объект Checkbox — getCheckboxGroup и setCheckboxGroup. Вы можете пользоваться методами getCurrent и setCurrent для получения и установки состояния выбранного в данный момент объекта Checkbox. Ниже приведен пример, отличающийся от предыдущего тем, что теперь различные варианты выбора в нем взаимно исключают друг друга.
import java.awt.*;
import java.applet.*;
public class CheckboxGroupDemo extends Applet {
public void init() {
setLayout(null);
int width = Integer.parseInt(getParameter("width"));
int height = Integer.parseInt(getParameter("height"));
CheckboxGroup g = new CheckboxGroup();
Checkbox winl = new Checkbox("Windows XP", g, true);
Checkbox win2 = new Checkbox("Windows 2000", g, false);
Checkbox win3 = new Checkbox("Windows 98", g, false);
add(winl);
add(win2);
add(win3);
winl.reshape(0,0, width, height / 3);
win2. reshape(0, height / 3, width, height / 3);
win3.reshape(0,2 * height / 3, width, height / 3);
}
}
Класс Choice (выбор) используется при создании раскрывающихся списочных меню (выпадающих списков типа ComboBox в Windows). Компонент Choice занимает ровно столько места, сколько требуется для отображения выбранного в данный момент элемента, когда пользователь щелкает мышью на нем, раскрывается меню со всеми элементами, в котором можно сделать выбор. Каждый элемент меню — это строка, которая выводится, выровненная по левой границе. Элементы меню выводятся в том порядке, в котором они были добавлены в объект Choice. Метод countItems возвращает количество пунктов в меню выбора. Вы можете задать пункт, который выбран в данный момент, с помощью метода select, передав ему либо целый индекс (пункты меню перечисляются с нуля), либо строку, которая совпадает с меткой нужного пункта меню. Аналогично с помощью методов getSelectedItem и getSelectedIndex можно получить, соответственно, строку-метку и индекс выбранного в данный момент пункта меню. Вот очередной простой пример, в котором создается два объекта Choice.
Читать дальшеИнтервал:
Закладка: