Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java11.pptx
Скачиваний:
132
Добавлен:
16.04.2015
Размер:
279.22 Кб
Скачать

JAVA-ТЕХНОЛОГИЯ

Сафонов Владимир Олегович

Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)

Email: vosafonov@gmail.com

Лекция 11

Swing

Swing – инструментарий более высокого уровня, значительно более удобный, чем AWT, для поддержки создания GUI

Swing является частью библиотеки Java Foundation Classes (JFC), включающей также Java2D и DnD (Drag-and-Drop)

Все компоненты Swing (в отличие от AWT) реализованы полностью на Java (lightweight components)

Дополнительные возможности Swing, по сравнению с AWT:

-панели со вкладками, панели прокрутки, деревья, таблицы и др.

-несколько стилей изображений GUI-компонент (Metal, Motif, Windows, Windows XP, GTK, Java 1.5: Ocean), с возможностью динамического изменения стиля и определения собственного стиля (Pluggable Look-and- Feel – PLAF)

-гораздо более широкие возможности компонент, аналогичных компонентам AWT (например, кнопка javax.swing.JButton, по сравнению с java.awt.Button)

-все компоненты Swing являются Java Beans

-средства редактирования и анализа (parsing) HTML-текстов

-средства создания редакторов текстов в форматах RTF и HTML

(C)В.О. Сафонов.

2013

Связь Swing и AWT и различия между ними

Swing реализован “поверх” AWT и использует классы компонент и событий AWT

Как правило, для управления компонентами Swing используются события и слушатели событий AWT; Swing добавляет новые события, соответствующие своим новым компонентам

В отличие от AWT, два базовых класса Swing – JFrame (фрейм) и JApplet (апплет), требуют для вставки и размещения их подкомпонент обращения к панели содержания (ContentPane),

например:

java.awt.Frame f; … f.add(aChild); но:

javax.swing.JFrame jf; … jf.getContentPane().add(aChild);

(в более новой версии Swing использование панели содержания уже не обязательно – 2010)

(C) В.О. Сафонов. 2013

Пример: панели со вкладками в Swing (слайд 1 / 4 )

import javax.swing.*;

// класс TLanguagePanel: структура панели public class TLanguagePanel extends JPanel {

private JTabbedPane p;

private JPanel makePane(String s)

{ // служебный метод: создать панель с меткой JPanel jp = new JPanel(); jp.setBackground(java.awt.SystemColor.control);

// цвет фона для элементов управления jp.add(new JLabel(s));

return jp;

}// makePane

(C)В.О. Сафонов.

2013

Пример: панели со вкладками в Swing (слайд 2 / 4)

public TLanguagePanel()

{// конструктор класса TLanguagePanel setLayout (new java.awt.BorderLayout()); p = new JTabbedPane();

p.addTab("Pascal", makePane("My first language"));

p.addTab("C#", makePane("My Microsoft language"));

p.addTab("Java", makePane("My favourite language"));

p.setSelectedIndex(2);

add (p, java.awt.BorderLayout.CENTER) ;

}

} // TLanguagePanel

(C) В.О. Сафонов. 2013

Пример: панели со вкладками в Swing (слайд 3 / 4)

import java.awt.event.*; import javax.swing.*;

// Класс TPanelRun – фрейм для запуска панели public class TPanelRun extends JFrame {

public TPanelRun() { super("Choose your language");

JPanel p = new TLanguagePanel(); setContentPane(p);

}

(C) В.О. Сафонов. 2013

Пример: панели со вкладками в Swing (слайд 4 / 4)

public static void main(String[] args) { JFrame f = new TPanelRun(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e)

{System.exit(0);}

});

f.pack(); // установка размера, подходящего // для размещения компонент

f.setVisible(true);

}

} // TPanelRun

(C) В.О. Сафонов. 2013

Визуальный образ (SPARC/ Solaris, .tiff)

(C) В.О. Сафонов. 2013

Комментарии к примеру панели со вкладками

Определены два класса:

-TLanguagePanel – структура панели

-TPanelRun – создание фрейма верхнего уровня для визуализация панели.

Такая архитектура позволяет выделить процесс формирования панели (add…) в отдельный класс, а

затем установить уже готовую панель в качестве панели содержания фрейма (setContentPane)

Служебный метод makePane класса TLanguagePanel используется для создания одной вкладки в виде

панели Swing (JPanel), в которую (с выравниванием по

центру) вставляется метка (JLabel) с заданной

надписью. Цвет фона вкладки устанавливается равным цвету фона элемента управления AWT

Метод addTab класса JTabbedPane (панель со

(C)В.вкладками)О. Сафонов. добавляет новую вкладку

2013

Комментарии к примеру (продолжение)

Конструктор класса TPanelRun создает TLanguagePanel и устанавливает ее в качестве панели содержания фрейма

Фрейм (для простоты примера) обрабатывает единственное событие – закрытие окна через пункт меню “Close” (Alt/F4). В отличие от AWT, никаких дополнительных вызовов для связи с native-окном не требуется

Метод pack унаследован от класса Window. Он обеспечивает установку начальных размеров фрейма,

достаточных для размещения его подкомпонент, в соответствии с их начальными размерами (preferred size).

Как и для компоненты AWT, визуализация компоненты

(C) В.SwingО. Сафоноввыполняется. вызовом метода

2013f.setVisible(true).

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