Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java / Лекции / lection5.docx
Скачиваний:
70
Добавлен:
15.03.2015
Размер:
230.33 Кб
Скачать

Лекция 5. Графический пользовательский интерфейс

5.1. Библиотека Swing

5.1.1. Библиотеки для создания графического интерфейса

  • AWT(AbstractWindowToolkit) – Платформено-зависимый графический интерфейс.

  • Swing– Платформено-независимый графический интерфейс.

Все классы библиотеки Swingрасположены в пакетеjavax.swing. БиблиотекаSwingявляется надстройкой над библиотекойAWTи предоставляет возможность создания платформено-независимого пользовательского интерфейса.

5.1.2. Анонимные вложенные классы

В библиотеках AWTиSwingактивно используются анонимные вложенные классы. Эти классы не имеют имени и могут определяться внутри других классов и выражений. Анонимный вложенный класс может быть создан на основе класса-прародителя или реализовывать интерфейс.

Пример:

public class Example {

public static void main(String args[]) {

// Обычный экземпляр объекта Object

System.out.println(new Object());

// Экземпляр анонимного класса,

// унаследованного от Object

Object o = new Object() {

public String toString() {

return "Анонимный класс #1";

}

};

System.out.println(o);

// Экземпляр анонимного класса,

// унаследованного от Object,

// созданный внутри выражения

System.out.println(new Object() {

public String toString() {

return "Анонимный класс #2";

}

});

}

}

5.1.3. Интерфейс Runnable

Интерфейс Runnableпредназначен для реализации потоков выполнения вJava. Он содержит единственный методvoidrun(), который вызывается при запуске потока.

public interface Runnable {

public void run();

}

5.1.4. Использование библиотеки Swing

Все действия с библиотекой Swingдолжны выполняться в потоке выполнения обработки событий (Event Dispatch Thread). Для добавления своего кода в поток обработки событий предназначен статический метод EventQueue.invokeLater(Runnable), принимающий в качестве аргумента экземпляр класса, реализующего интерфейсRunnable.

Пример:

import java.awt.*;

import javax.swing.*;

public class Example {

public static void main(String args[]) {

EventQueue.invokeLater(new Runnable() {

public void run() {

// Использование библиотеки Swing

}

});

}

}

5.2. Окна верхнего уровня

5.2.1. Класс jFrame

Класс JFrameпредставляет собой окно верхнего уровня, имеющее заголовок, рамку, кнопки закрытия, сворачивания и распахивания.

Таблица 5.1. Основные конструкторы класса JFrame.

Конструктор

Пример

Описание

JFrame()

JFrame frame = new JFrame();

Конструктор по умолчанию, создаёт пустое окно.

JFrame(String title)

JFrame frame = new JFrame(“Заголовок”);

Создаёт пустое окно с заголовком title.

Таблица 5.2. Некоторые методы класса JFrame.

Метод

Описание

int getDefaultCloseOperation()

void setDefaultCloseOperation(int operation)

Получить или установить действие, производимое, когда пользователь нажимает кнопку закрытия окна.

void setLayout(LayoutManager manager)

Установить менеджер компоновки окна.

Таблица 5.3. Некоторые методы класса Component.

Метод

Описание

voidaddKeyListener(KeyListener l)

Добавляет новый обработчик событий клавиатуры.

void addMouseListener(MouseListener l)

Добавляет новый обработчик событий нажатия кнопок мыши.

void addMouseMotionListener (MouseMotionListener l)

Добавляет новый обработчик событий перемещения указателя мыши.

Color getBackground()

void setBackground(Color c)

Возвращает или устанавливает цвет фона.

Color getForeground()

void setForeground(Color c)

Возвращает или устанавливает цвет переднего плана.

int getHeight()

Возвращает высоту.

int getWidth()

Возвращает ширину.

int getX()

Возвращает координату x.

int getY()

Возвращает координату y.

voidrepaint()

Перерисовывает окно.

void repaint(int x, int y, int width, int height)

Перерисовывает участок окна.

void setBounds(int x, int y, int width, int height)

Изменяет размер или перемещает окно, путём установки новых границ.

void setSize(int width, int height)

Устанавливает ширину и высоту.

void setVisible(boolean b)

Показывает или скрывает окно.

Таблица 5.4. Некоторые методы класса Container.

Метод

Описание

Component add(Component comp)

Добавляет компонент к контейнеру

Component findComponentAt(int x, int y)

Возвращает компонент, находящийся в заданной точке

Insets getInsets()

Возвращает отступы контейнера

void remove(Component comp)

Удаляет компонент из контейнера

void removeAll()

Удаляет все компоненты из контейнера

Пример:

import java.awt.*;

import javax.swing.*;

public class Window {

public static void main(String args[]) {

EventQueue.invokeLater(new Runnable() {

public void run() {

JFrame frame =

new JFrame("Пример окна верхнего уровня");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(300, 200);

frame.setVisible(true);

}

});

}

}

Удобно создавать окно приложение путём расширения базового класса JFrame.

Пример:

import java.awt.*;

import javax.swing.*;

public class ForegroundWindow extends JFrame {

public ForegroundWindow() {

super("Пример окна верхнего уровня");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(300, 200);

setVisible(true);

}

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

new ForegroundWindow().setVisible(true);

}

});

}

}

Соседние файлы в папке Лекции