
- •1. Условный оператор if
- •If (условие)
- •2. Составной оператор
- •4. Оператор цикла for
- •5. Оператор цикла while (цикл с предусловием)
- •6. Операторы цикла do … while (цикл с постусловием)
- •7. Операторы прерывания continue, break, return, System.Exit
- •8. Оператор выбора switch
- •9. Условное выражение … ? … : …
- •If (условие) {
- •10. Ошибки при использовании вещественного счетчика цикла
- •11. Эффективная организация циклов
- •Void getFood(int food, int drink); // Кормление
- •Сборка мусора
- •Import org.Eclipse.Swt.*;
- •Import org.Eclipse.Swt.Widgets.*;
- •If (!display.ReadAndDispatch ()) display.Sleep ();
- •Import org.Eclipse.Jface.Window.ApplicationWindow;
- •Import org.Eclipse.Swt.Swt;
- •Import org.Eclipse.Swt.Widgets.*;
- •Основные элементы («теги»)
- •Гиперссылки
- •Текстовые блоки
- •Форматирование текста
- •Options
- •Клиенты
- •2.2.Простой Web проект
- •Компоненты j2ee
- •Комментарии
- •Скриптовые элементы
- •Объявления jsp
- •Выражения jsp
- •Скриплеты jsp
- •Директивы jsp
Import org.Eclipse.Swt.*;
Import org.Eclipse.Swt.Widgets.*;
public class HelloWorld {
public static void main (String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
Label label = new Label(shell, SWT.NONE);
shell.setSize(300,200);
label.setText("Hello World");
label.pack();
shell.open();
while (!shell.isDisposed()) {
If (!display.ReadAndDispatch ()) display.Sleep ();
}
display.dispose ();
}
}
JFace — набор Java-классов, реализующий наиболее общие задачи построения GUI. В рамках проекта Eclipse библиотека JFace описывается следующим образом: «Элементы пользовательского интерфейса, реализация которых может быть утомительной»[1]. JFace представляет собой дополнительный программный слой над SWT, который реализует паттерн Model-View-Controller. JFace предоставляет следующие возможности:
Предоставляет «Viewer» классы, отвечающие за отображение и реализующие трудоёмкие задачи по заполнению, сортировке, фильтрации, а также обновлению виджетов.
Предоставляет «Action» классы, которые позволяют разработчику определять специфическое поведение для отдельных элементов пользовательского интерфейса, таких как пункты меню, кнопки и т. д.
Предоставляет регистры, содержащие шрифты и изображения.
Предоставляет набор стандартных диалоговых окон и виджетов, а также предоставляет фреймворк для создания сложного графического интерфейса для взаимодействия с пользователем.
Основная цель JFace заключается в освобождении разработчика от большого количества рутинных операций по созданию пользовательского интерфейса, позволяя ему сосредоточиться на бизнес-логике приложения.
Пример программы «Hello World» с использованием JFace:
Import org.Eclipse.Jface.Window.ApplicationWindow;
Import org.Eclipse.Swt.Swt;
Import org.Eclipse.Swt.Widgets.*;
public class HelloWorld extends ApplicationWindow {
public static void main(String[] args) {
new HelloWorld().run();
}
public HelloWorld() {
super(null);
}
public void run() {
setBlockOnOpen(true);
open();
Display.getCurrent().dispose();
}
protected Control createContents(Composite parent) {
Label label = new Label(parent, SWT.CENTER);
label.setText("Hello, World");
return label;
}
}
Классы-оболочки
Кроме базовых типов данных, в языке Java широко используются соответствующие классы-оболочки (wrapper-классы) из пакета java.lang: Boolean, Character, Integer, Byte, Short, Long, Float, Double. Объекты этих классов могут хранить те же значения, что и соответствующие им базовые типы.
|
|
|
|
Рис. 2.3. Классы-оболочки
Объекты этих классов представляют ссылки на участки динамической памяти, в которой хранятся их значения, и являются классами-оболочками для значений базовых типов. Классы, соответствующие числовым базовым типам, находятся в библиотеке java.lang, являются наследниками абстрактного класса Number и реализуют интерфейс Comparable, представляющий собой интерфейс для определения возможности сравнения объектов одного типа между собой. Объекты классов-оболочек по умолчанию получают значение null.
Переменную базового типа можно преобразовать к соответствующему объекту, передав ее значение конструктору при объявлении объекта. Объекты класса могут быть преобразованы к любому базовому типу методами типValue() или обычным присваиванием.
Класс Character не является подклассом Number, этому классу нет необходимости поддерживать интерфейс классов, предназначенных для хранения результатов арифметических операций. Класс Character имеет целый ряд специфических методов для обработки символьной информации. У класса Character, в отличие от других классов оболочек, не существует конструктора с параметром типа String.
14. SWT/JFace. Основные компоненты.
См. 13 плюс инфа ниже.
К основным «Инфраструктурным» компонентам библиотеки SWT можно отнести компоненты Display, Shell, Composite и Group.
Компонент Display выполняет множество функций. Он обеспечивает связь между операционной платформой, на которой выполняется данный экземпляр Eclipse, библиотекой SWT и потоком, в котором пользователь взаимодействует с визуальными компонентами SWT (и эти компоненты взаимодействуют друг с другом) – поток UI. Помимо этого, класс Display используется для управления ресурсами – шрифтами, цветами, курсорами. Наконец, Display является контейнером для хранения создаваемых разработчиком приложения произвольных свойств, определяемых в виде пары «имя_свойства – значение».
Компонент Shell является оконным фреймом – одним из возможных контейнеров визуальных компонентов. С каждым фреймом можно сопоставить свой набор графических ресурсов и свойств, т.е. свой объект Display.
Наличие в библиотеке дополнительных контейнеров – Composite и Group – позволяет создать иерархию контейнеров (если это необходимо). При использовании контейнеров нужно понимать отличие между «группировкой» визуальных компонентов только с точки зрения визуального представления (например, взаимного расположения на поверхности окна представления) и управлением циклом жизни компонентов.
Использование компонентов, подобных Display и Shell, различается при создании независимых SWT-приложений Eclipse и при разработке плагинов, в частности, представлений.
Для независимых приложений программист (или средства визуального проектирования) сам должен создавать SWT-среду приложения. Ниже приведен фрагмент кода такого приложения:
import org.eclipse.swt.*; import org.eclipse.swt.events.*; import org.eclipse.swt.widgets.*;
class ... { public static void main (String[] args[]) { Display d = new Display(); Shell s = new Shell (d); s.setText (“...”); // Заголовок ... Composite c = new Composite (s, SWT.BORDER); // дочерний контейнер // компонентов Button b = new Button (c, SWT.OK); // кнопка под // управлением дочернего // контейнера ... s.open(); while (!s.isDisposed()) { if (!d.readAndDispatch()) d.sleep(); } d.dispose(); } } |
При работе с представлениями инфраструктура окна уже создана, и нет необходимости создавать объекты Shell и Display – обычно вместо этого программист получает доступ к уже существующим компонентам.
Чтобы получить доступ к компоненту Display, можно использовать, например, статический метод getCurrent() класса Display, который возвращает объект класса Display, сопоставленный с текущим потоком UI (если метод вызывается не в контексте этого потока, то возвращается значение null). Получить Shell затем можно с помощью вызова метода getActiveShell().
Другой способ получения объектов Display и Shell – использование соответствующих get-методов для «комплексных» компонентов отображения данных (о них будет рассказано ниже).
Наконец, для некоторых callback-методов управления циклом жизни представления – особенно часто этот способ используется при написании кода метода createPartControl(), «отвечающего» за создание компонентов для представления – текущий контейнер компонентов передается в качестве параметра типа Composite. Для этого параметра можно вызвать метод getShell().
Библиотека SWT, помимо «элементарных компонентов» (кнопок (Button), полей (Label) и пр.), содержит более сложные компоненты, предназначенные для отображения структурированной информации, такие, как таблицы (Table) и деревья (Tree).
В принципе, набора компонентов SWT вполне достаточно для отображения графической и текстовой информации в окнах представлений.
Основные компоненты JFace включают:
* Viewers – классы для инкапсуляции задач предоставления данных для отображения, их фильтрации, сортировки и т.п. * Actions and contributions – вводят семантику описания пользовательских действий и того, как они должны быть доступны пользователю. * Image and font registries – предоставляют классы для управления ресурсами, такими как изображения и шрифты. * Dialogs and wizards – фреймворк для построения сложного диалогового взаимодействия с пользователем. * Field assist – предоставляет возможности для реализации вспомогательной функциональности для полей, такой как отображение статуса поля или подсказки о содержимом.
15. XML.
XML (англ. eXtensible Markup Language — расширяемый язык разметки; произносится [экс-эм-э́л]) — рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML). XML является упрощённым подмножеством языка SGML.
Стандартом определены два уровня правильности документа XML:
Правильно построенный (англ. well-formed). Правильно построенный документ соответствует всем общим правилам синтаксиса XML, применимым к любому XML-документу. И если, например, начальный тег не имеет соответствующего ему конечного тега, то это неправильно построенный документ XML. Документ, который неправильно построен, не может считаться документом XML; XML-процессор (парсер) не должен обрабатывать его обычным образом и обязан классифицировать ситуацию как фатальная ошибка.
Действительный (англ. valid). Действительный документ дополнительно соответствует некоторым семантическим правилам. Это более строгая дополнительная проверка корректности документа на соответствие заранее определённым, но уже внешним правилам, в целях минимизации количества ошибок, например, структуры и состава данного, конкретного документа или семейства документов. Эти правила могут быть разработаны как самим пользователем, так и сторонними разработчиками, например, разработчиками словарей или стандартов обмена данными. Обычно такие правила хранятся в специальных файлах — схемах, где самым подробным образом описана структура документа, все допустимые названия элементов, атрибутов и многое другое. И если документ, например, содержит не определённое заранее в схемах название элемента, то XML-документ считается недействительным; проверяющий XML-процессор (валидатор) при проверке на соответствие правилам и схемам обязан (по выбору пользователя) сообщить об ошибке.
Данные два понятия не имеют достаточно устоявшегося стандартизированного перевода на русский язык, особенно понятие valid, которое можно также перевести, как имеющий силу, правомерный, надёжный, годный, или даже проверенный на соответствие правилам, стандартам, законам. Некоторые программисты применяют в обиходе устоявшуюся кальку «Валидный».
XML — это описанная в текстовом формате иерархическая структура, предназначенная для хранения любых данных. Визуально структура может быть представлена как дерево элементов. Элементы XML описываются тегами.
Рассмотрим пример простого кулинарного рецепта, размеченного с помощью XML:
<?xml version="1.0" encoding="UTF-8"?>
<recipe name="хлеб" preptime="5" cooktime="180">
<title>Простой хлеб</title>
<composition>
<ingredient amount="3" unit="стакан">Мука</ingredient>
<ingredient amount="0.25" unit="грамм">Дрожжи</ingredient>
<ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient>
<ingredient amount="1" unit="чайная ложка">Соль</ingredient>
</composition>
<instructions>
<step>Смешать все ингредиенты и тщательно замесить.</step>
<step>Закрыть тканью и оставить на один час в тёплом помещении.</step>
<!-- <step>Почитать вчерашнюю газету.</step> - это сомнительный шаг... -->
<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
</instructions>
</recipe>
Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например, <step>, а закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например, </step>. Имена элементов, как и имена атрибутов, не могут содержать пробелы, но могут быть на любом языке, поддерживаемом кодировкой XML-документа. Имя может начинаться с буквы, подчёркивания, двоеточия. Остальными символами имени могут быть те же символы, а также цифры, дефис, точка.
Содержимым элемента (англ. content) называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы. Ниже приведён пример XML-элемента, который содержит открывающий тег, закрывающий тег и содержимое элемента:
<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
Кроме содержания у элемента могут быть атрибуты — пары имя-значение, добавляемые в открывающий тег после названия элемента. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе. Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега.
<ingredient amount="3" unit="стакан">Мука</ingredient>
В приведённом примере у элемента «ingredient» есть два атрибута: «amount», имеющий значение «3», и «unit», имеющий значение «стакан». С точки зрения XML-разметки, приведённые атрибуты не несут никакого смысла, а являются просто набором символов.
16. HTML.
HTML (от англ. HyperText Markup Language — «язык разметки гипертекста») — стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц создаются при помощи языка HTML (или XHTML). Язык HTML интерпретируется браузерами и отображается в виде документа в удобной для человека форме.
HTML — это теговый язык разметки документов, то есть любой документ на языке HTML представляет собой набор элементов, причем начало и конец каждого элемента обозначается специальными пометками, называемыми тегами. Регистр, в котором набрано имя тега, в HTML значения не имеет. Элементы могут быть пустыми, то есть не содержащими никакого текста и других данных (например, тег перевода строки <br>). В этом случае обычно не указывается закрывающий тег. Кроме того, элементы могут иметь атрибуты, определяющие какие-либо их свойства (например, размер шрифта для тега <font>). Атрибуты указываются в открывающем теге. Вот пример части разметки HTML-документа:
<p>Текст между двумя тегами - открывающим и закрывающим.</p>
<a href="http://www.example.com">Здесь элемент содержит атрибут href.</a>
А вот пример пустого элемента: <br>
Каждый HTML-документ, отвечающий спецификации HTML какой-либо версии, обязан начинаться со строки декларации версии HTML <!DOCTYPE>, которая обычно выглядит примерно так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Если эта строка не указана, то добиться корректного отображения документа в браузере становится труднее.
Далее обозначается начало и конец документа тегами <html> и </html> соответственно. Внутри этих тегов должны находиться теги заголовка (<head></head>) и тела (<body></body>) документа.
Атрибуты
У тега могут быть свойства, называемые атрибутами, дающие дополнительные возможности форматирования текста. Они записываются в виде пары имя-значение, причем нечисловое значение заключается в кавычки. Например, можно выделить фрагмент текста определенным шрифтом (тег <font>), указав в этом теге название шрифта и желаемый размер: <font face="Times, Arial, Courier" size=4> оформляемый текст </font>