
- •Ide или текстовый редактор. Я рекомендую Eclipse (ссылки на дополнительную информацию по Eclipse можно найти в разделе Ресурсы).
- •Роль Swing
- •JComponent
- •JButton
- •JTextField
- •Is/setVisible(): Получить/установить видимость фрейма, другими словами, отображение на экране.
- •JPasswordField
- •JCheckBox/jRadioButton
- •JMenu/jMenuItem/jMenuBar
- •JSpinner
- •JToolBar
- •JToolTip
- •JOptionPane
- •JTextArea
- •JScrollPane
- •Простые схемы
- •События
- •Примеры модели
- •Шаг 3: Управление событиями
- •Шаг 4: Модели
- •Шаг 5: Звонки и свистки
- •Дальнейшие действия
- •Получить продукты и технологии
JTextField
Основным текстовым компонентом в Swing является JTextField; он позволяет пользователям вводить текст в UI. Я уверен, что вы знакомы с текстовым полем; вы должны были использовать его при вводе имени пользователя и пароля для получения данного руководства. Вы вводите, удаляете, выделяете текст, перемещаете курсор — Swing заботится обо всем, что вы делаете. Как UI-разработчику вам действительно не нужно делать много для того, чтобы использовать возможности JTextField.
В любом случае, вот как выглядит JTextField в действии:
Вы должны интересоваться только одним методом при работе с JTextField, и это должен быть, очевидно, метод, устанавливающий текст: get/setText(). Этот метод получает/устанавливает текст внутри JTextField.
JFrame
Пока я рассмотрел три основных строительных блока Swing: метку, кнопку и текстовое поле; теперь вы должны куда-то поместить их. Они не могут просто летать по экрану в надежде на то, что пользователь знает, как работать с ними. КлассJFrame делает именно это — он является контейнером, позволяющим добавлять к себе другие компоненты для их организации и предоставления пользователю. Он имеет много других бонусов, но я считаю, что легче всего сначала на него посмотреть:
JFrame
JFrame на самом деле делает больше, чем просто позволяет вам размещать компоненты на нем и предоставлять их пользователю. Несмотря на всю его кажущуюся простоту, он фактически является одним из самых сложных компонентов в Swing-пакетах. Говоря очень упрощенно, JFrame выступает в качестве моста между независимыми от OS Swing-частями и реальной OS, на которой они работают. JFrame регистрируется как окно в OS и таким образом получает многие из знакомых свойств окна операционной системы: минимизация/максимизация, изменение размеров и перемещение. Хотя для целей данного руководства совершенно достаточно считать JFrame палитрой, на которой вы размещаете компоненты. Некоторыми из методов, которые вы можете вызвать с JFrame для изменения его свойств, являются:
-
get/setTitle(): Получить/установить заголовок фрейма.
-
get/setState(): Получить/установить состояние фрейма (минимизировать, максимизировать и т.д.).
-
Is/setVisible(): Получить/установить видимость фрейма, другими словами, отображение на экране.
-
get/setLocation(): Получить/установить месторасположение в окне, где фрейм должен появиться.
-
get/setSize(): Получить/установить размер фрейма.
-
add(): Добавить компоненты к фрейму.
Простое приложение
Как и во всех руководствах «Введение в х», у нас есть необходимый элемент — демонстрация HelloWorld. Однако этот пример полезен не только для того, чтобы увидеть, как работает Swing-приложение, но также и для проверки правильности установки системы. Если это простое приложение работает, любое другое тоже будет работать нормально. На приведенном ниже рисунке показан завершенный пример:
Пример
HelloWorld
Первым вашим действием является создание класса. Swing-приложение, которое размещает компоненты в JFrame, должно быть подклассом класса JFrame, например так:
public class HelloWorld extends JFrame |
Сделав так, вы получаете все свойства JFrame, описанные выше, и, что самое важное, поддержку окна в OS. Следующий шаг — размещение компонентов на экране. В данном примере мы используем схему null. Более подробно о схемах и менеджерах схем вы узнаете позже. Для этого примера числа указывают позицию в JFrame в пикселях:
public HelloWorld() { super(); this.setSize(300, 200); this.getContentPane().setLayout(null); this.add(getJLabel(), null); this.add(getJTextField(), null); this.add(getJButton(), null); this.setTitle("HelloWorld"); }
private javax.swing.JLabel getJLabel() { if(jLabel == null) { jLabel = new javax.swing.JLabel(); jLabel.setBounds(34, 49, 53, 18); jLabel.setText("Name:"); } return jLabel; }
private javax.swing.JTextField getJTextField() { if(jTextField == null) { jTextField = new javax.swing.JTextField(); jTextField.setBounds(96, 49, 160, 20); } return jTextField; }
private javax.swing.JButton getJButton() { if(jButton == null) { jButton = new javax.swing.JButton(); jButton.setBounds(103, 110, 71, 27); jButton.setText("OK"); } return jButton; } |
Теперь, когда компоненты размещены в JFrame, необходимо, чтобы JFrame показался на экране; также нужно сделать ваше приложение запускаемым. Как и во всех Java-приложениях, вы должны добавить метод main, для того чтобы сделать Swing-приложение запускаемым. Внутри этого метода main необходимо создать объект вашего приложения HelloWorld и вызвать setVisible():
public static void main(String[] args) { HelloWorld w = new HelloWorld(); w.setVisible(true); } |
Это все, что нужно для создания приложения!
Дополнительные Swing-виджеты
JComboBox
В этом разделе мы рассмотрим все остальные компоненты в библиотеке Swing: как их использовать, и на что они похожи. Это даст лучшее представление о той мощи, которую дает вам (как UI-разработчику) Swing.
Мы начнем с JComboBox. Комбинированный список является знакомым ниспадающим списком элементов, в котором пользователи могут либо выбрать ноль или один (и только один) элемент из списка. В некоторых версиях комбинированного списка вы можете ввести ваш собственный вариант. Хорошим примером является адресная строка вашего браузера; это комбинированный список, позволяющий ввести собственный вариант. Вот как выглядит JComboBox в Swing:
Важными функциями JComboBox являются функции, работающие с содержащимися в нем данными. Вы должны иметь способ установить данные в JComboBox, изменить их и получить выбор пользователя после того, как он его сделал. Вы можете использовать следующие методы JComboBox:
-
addItem(): Добавить элемент к JComboBox.
-
get/setSelectedIndex(): Получить/установить индекс выбранного элемента в JComboBox.
-
get/setSelectedItem(): Получить/установить выбранный объект.
-
removeAllItems(): Удалить все объекты из JComboBox.
-
remoteItem(): Удалить конкретный объект из JComboBox.