swing - Andrey

advertisement

Перед началом изучения Swing вы, как настоящий новичок, должны
задать вопрос, что такое UI? Ответ для новичков - это
"пользовательский интерфейс". Но поскольку цель данного
руководства заключается в том, чтобы вы больше не были новичком,
нам нужно более широкое определение, чем это.
 Итак, я опять задаю вопрос: что такое UI? Вы могли бы определить
его как кнопки, на которые нажимаете, поле адреса, в которое
вводите информацию, и окна, которые открываете и закрываете.
Все это - элементы UI, но это не только вещи, которые вы видите
на экране. Мышка, клавиатура, громкость музыки, цвета экрана,
используемые шрифты и расположение объекта по отношению к
другому объекту - все это тоже составляет UI. Вообще говоря,
любой объект, принимающий участие во взаимодействии
пользователя и компьютера, является частью UI. Это кажется таким
простым, что вы, должно быть, удивитесь тому, как много людей и
корпораций занимаются этим годами. Действительно, сейчас есть
дисциплины в колледжах, полностью посвященные этому
взаимодействию.




Компонент JList является полезным компонентом для предоставления
пользователю многих вариантов для выбора. Вы можете представлять его
как расширение JComboBox. JList предоставляет больше вариантов и
добавляет возможность выбора нескольких вариантов. Выбор между JList и
JComboBox часто заключается в следующем: если вам требуется
возможность множественного выбора или имеется более 15 вариантов (хотя
это число не является общим правилом), вы должны всегда выбирать
JList.
Вы должны использовать JList совместно с JScrollPane, как было показано
выше, поскольку он может предоставлять больше вариантов, чем
помещается в видимой области.
JList имеет также модель выбора (также имеющуюся в JTable), которую
вы можете установить в различные типы выбора вариантов. Такими
типами являются: одиночный выбор (вы можете выбрать только один
вариант), одиночный интервал (вы можете выбрать смежные варианты, но
в любом их количестве) и множественный интервал (вы можете выбрать
любое число вариантов в любых комбинациях).
JList является первым из компонентов, которые я называю "сложными
компонентами", и к которым относятся также компоненты JTable и JTree,
допускающие большое количество пользовательских настроек, в том числе
внешнего вида и способа обработки данных. Поскольку данное руководство
предназначено только для рассмотрения основ Swing, я не буду углубляться
в эти расширенные функции, но при работе с этими компонентами вы
должны помнить - они более сложны, чем рассмотренные до сих пор
компоненты.
 Существует много функций в JList для работы с данными, и,




как я уже сказал, это только немногие из тех, которые
потребуются для вашей работы с JList. Вот основные методы:
get/setSelectedIndex(): Получить/установить выбранную
строку списка; в случае со списками с множественным
выбором возвращается int[].
get/setSelectionMode(): Как объяснялось ранее,
получить/установить режим выбора в одиночный выбор,
одиночный интервал или множественный интервал.
setListData(): Установить данные для использования в JList.
get/setSelectedValue(): Получить выбранный объект (как
противоположность выбранному номеру строки).
JList в Swing выглядит так:
JList
 Базовым строительным блоком всей библиотеки визуальных
компонентов Swing является JComponent. Это суперкласс каждого
компонента. Он является абстрактным классом, поэтому в
действительности вы не можете создать JComponent, но он содержит
буквально сотни функций, которые каждый компонент Swing может
использовать как результат иерархии классов. Очевидно, что
некоторые концепции более важны, чем другие, но для целей этого
руководства важными являются:
 JComponent - базовый класс не только для Swing-компонентов, но
также и для пользовательских компонентов (более подробная
информация приведена в руководстве "Swing для среднего уровня").
 Он обеспечивает инфраструктуру окрашивания для всех компонентов
- нечто, становящееся удобным для пользовательских компонентов
(опять же, более подробная информация приведена в руководстве
"Swing для среднего уровня").
 Он знает, как обрабатывать все нажатия клавиш на клавиатуре.
Подклассы, следовательно, должны только прослушивать
определенные клавиши.
 Он содержит метод add(), который позволяет вам добавить другие
JComponent. Этим способом вы можете добавить любой Swingкомпонент к любому другому Swing-компоненту для создания
вложенных компонентов (например, JPanel, содержащую JButton,
или даже более причудливые комбинации, например JMenu,
содержащее JButton).







Самым основным компонентом в библиотеке Swing является JLabel. Он
делает именно то, чего вы от него ожидаете: располагается в нужном
месте, улучшает вид приложения и описывает другие компоненты. На
приведенном ниже изображении показан JLabel в действии:Не очень
впечатляюще, но все равно полезно. Фактически, вы используете компоненты
JLabel по всему приложению не только как текстовые описания, но и как
графические описания. Когда бы вы ни увидели изображение в Swingприложении, есть шанс, что это JLabel. У JLabel не много методов для новичков в
Swing, кроме, возможно, ожидаемых вами. К основным методам относится
установка текста, изображения, выравнивания и других компонентов, которые
описывает метка:
get/setText(): Получить/установить текст в метке.
get/setIcon(): Получить/установить изображение в метке.
get/setHorizontalAlignment(): Получить/установить горизонтальную позицию
текста.
get/setVerticalAlignment(): Получить/установить вертикальную позицию текста.
get/setDisplayedMnemonic(): Получить/установить мнемонику (подчеркнутый
символ) для метки.
get/setLabelFor(): Получить/установить компонент, к которому присоединена
данная метка; когда пользователь нажимает комбинацию клавиш Alt+мнемоника,
фокус перемещается на указанный компонент.







Основным активным компонентом в Swing является JButton, кнопка,
которую вы видите (с надписями OK и Cancel) в каждом окне; он
делает именно то, что ожидается от кнопки - вы нажимаете на нее, и
что-то происходит. Что именно происходит? Да, вы должны
определить это. JButton в действии выглядит следующим образом:
Методы, используемые для изменения свойств JButton, аналогичны
методам JLabel (вы обнаружите, что они аналогичны для большинства
Swing-компонентов). Они управляют текстом, изображениями и
ориентацией:
get/setText(): Получить/установить текст в кнопке.
get/setIcon(): Получить/установить изображение в кнопке.
get/setHorizontalAlignment(): Получить/установить горизонтальную
позицию текста.
get/setVerticalAlignment(): Получить/установить вертикальную
позицию текста.
get/setDisplayedMnenomic(): Получить/установить мнемонику
(подчеркнутый символ), которая в комбинации с кнопкой Alt вызывает
нажатие кнопки.








Кроме этих методов я познакомлю вас с еще одной группой методов,
которые содержит JButton. Эти методы используют все различные
состояния кнопки. Состояние - это свойство, описывающее
компонент, обычно имеющее значение true/false. В случае с JButton
он имеет следующие возможные состояния: активная/неактивная,
выбранная/не выбранная, мышка сверху/мышки нет, нажата/отжата.
Кроме того, вы можете комбинировать состояния, например: кнопка
может быть выбрана и над ней находится мышка. Сейчас вы,
возможно, спрашиваете себя, для чего мне все эти состояния. В
качестве примера переместитесь к кнопке Back вашего браузера.
Обратите внимание на то, как меняется изображение при наведении на
нее указателя мышки, и как оно меняется при нажатии на кнопку. Эта
кнопка использует различные состояния. Использование различных
изображений для каждого состояния является популярным и очень
эффективным способом отображать действия пользователей.
Методами состояния для JButton являются:
get/setDisabledIcon()
get/setDisabledSelectedIcon()
get/setIcon()
get/setPressedIcon()
get/setRolloverIcon()
get/setRolloverSelectedIcon()
get/setSelectedIcon()
 Основным текстовым компонентом в Swing является
JTextField; он позволяет пользователям вводить текст в UI. Я
уверен, что вы знакомы с текстовым полем; вы должны были
использовать его при вводе имени пользователя и пароля для
получения данного руководства. Вы вводите, удаляете,
выделяете текст, перемещаете курсор - Swing заботится обо
всем, что вы делаете. Как UI-разработчику вам действительно
не нужно делать много для того, чтобы использовать
возможности JTextField.
 В любом случае, вот как выглядит JTextField в действии:

Вы должны интересоваться только одним методом при работе с
JTextField, и это должен быть, очевидно, метод, устанавливающий
текст: get/setText(). Этот метод получает/устанавливает текст внутри
JTextField.

Важными функциями JComboBox являются функции,
работающие с содержащимися в нем данными. Вы должны
иметь способ установить данные в JComboBox, изменить их и
получить выбор пользователя после того, как он его сделал. Вы
можете использовать следующие методы JComboBox:

addItem(): Добавить элемент к JComboBox.

get/setSelectedIndex(): Получить/установить индекс выбранного
элемента в JComboBox.

get/setSelectedItem(): Получить/установить выбранный объект.

removeAllItems(): Удалить все объекты из JComboBox.

remoteItem(): Удалить конкретный объект из JComboBox.
Download