Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в Swing.doc
Скачиваний:
62
Добавлен:
15.05.2015
Размер:
424.45 Кб
Скачать

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.