Java Advanced Интерфейс пользователя Часть 1. 2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Содержание 1.Компоненты и контейнеры.

Презентация:



Advertisements
Похожие презентации
1 Java 13. ЭЛЕМЕНТЫ КОМПОНОВКИ И УПРАВЛЕНИЯ. 2 Элементы управления Компоненты библиотеки Swing не привязаны к конкретной платформе. Классы компонент доступны.
Advertisements

Урок повторения по теме: «Сила». Задание 1 Задание 2.
1. Определить последовательность проезда перекрестка
Школьная форма Презентация для родительского собрания.
Введение в GUI. Возможности графических библиотек GUI-библиотеки Java (GUI – для standalone applications или applets) AWT – вызов native-компонентов =>
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Java: графический интерфейс пользователя. Swing и AWT AWT – Abstract Window Toolkit, единственный инструментарий для визуального интерфейса до 1998 года;
Типовые расчёты Растворы
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Разработал: Учитель химии, биологии высшей квалификационной категории Баженов Алексей Анатольевич.
Michael Jackson
1 © Luxoft Training 2013 Модуль 6 Обзор библиотек GUI разработки Введение в Swing Архитектура Swing Контейнеры Swing Компоненты Swing Менеджеры компоновки.
(урок математики). Назовите числа, которые делятся на 3: (3, 6, 9, 12, 15, 18, 21, 24, 27, 30) Назовите числа, которые делятся на 4: (4, 8,12, 16, 20,
дней и ночей 27 миллионов жизней советских людей 3.
Пользовательский интерфейс. GUI с применением AWT Создание элементов пользовательского интерфейса библиотека AWT (Аbstract Window Toolkit) поручала встроенным.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от
Таблица умножения на 8. Разработан: Бычкуновой О.В. г.Красноярск год.
Ф. Т. Алескеров, Л. Г. Егорова НИУ ВШЭ VI Московская международная конференция по исследованию операций (ORM2010) Москва, октября 2010 Так ли уж.
Транксрипт:

Java Advanced Интерфейс пользователя Часть 1

2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Содержание 1.Компоненты и контейнеры 2.Окна верхнего уровня 3.Компоновщики 4.Примеры компонент 5.Обрамление 6.Swing и потоки 7.Заключение

3 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Интерфейс пользователя Платформозависимый интерфейс AWT Пакеты java.awt.* Платформонезависимый интерфейс Swing Пакеты javax.swing.*

Компоненты и контейнеры Часть 1

5Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Компоненты Части интерфейса пользователя, не содержащие других компонентов JLabel – метка JButton – кнопка JMenuItem – элемент меню JTextArea – редактор текста

6Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Контейнеры Части интерфейса пользователя, содержащие другие компонентов JPanel – панель JFrame – окно приложения JDialog – диалоговое окно JSrollPane – область с полосой прокрутки

7Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Возможности компонентов Генерация событий Обработка ввода пользователя Рамки Отрисовка в ручную Поддержка Drag & Drop Компановка …

8Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Тяжело- и легковесные компоненты Тяжеловесные (heavyweight) компоненты Отрисовываются операционной системой Большинство AWT-компонент Легковесные (lightweight) компоненты Отрисовываются java-кодом Все Swing-компоненты, кроме окон верхнего уровня Тяжеловесные компоненты всегда отрисовываются поверх легковесных

9Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Пример: кнопки на панели JPanel panel = new JPanel(new FlowLayout()); panel.add(new JButton(" e=mc 2 ")); panel.add(new JButton("Button 2")); panel.add(new JButton("Button 3")); panel.add(new JButton("Long-Named Button 4")); panel.add(new JButton("5"));

Окна верхнего уровня Часть 2

11Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Типы окон Окно приложения Класс JFrame Диалоговое окно Класс JDialog Окно апплета Класс JApplet Вложенное окно Класс JInternalFrame

12Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Структура окна Методы getXXXPane() – возвращает панель setXXXPane() – устанавливает панель

13Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Окна приложения Класс JFrame Конструкторы JFrame(title) Свойства title – заголовок jMenuBar – меню iconImage – иконка окна

14Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Закрытие окон Метод setDefaultCloseOperation(operation) – установить действие при закрытии окна HIDE_ON_CLOSE DO_NOTHING_ON_CLOSE DISPOSE_ON_CLOSE EXIT_ON_CLOSE (JFrame)

15Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Пример: окно с кнопками JFrame frame = new JFrame("SimpleDemo"); // Добавление панели к окну frame.getContentPane().add(panel); frame.pack(); // подгонка размера frame.setVisible(true); // Показать пользователю

16Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Меню Основное меню Класс JMenuBar Раскрывающееся меню Класс JMenu Элементы меню Класс JMenuItem – простой Класс JCheckBoxMenuItem – помечаемый Класс JRadioButtonMenuItem – один из Класс JSeparator – разделитель

17Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Пример: окно с меню (2) frame.setJMenuBar(createMainMenu()); … public static JMenuBar createMainMenu() { JMenuBar mainMenu = new JMenuBar(); mainMenu.add(createFileMenu()); mainMenu.add(createTestMenu()); mainMenu.add(createHelpMenu()); return mainMenu; }

18Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Пример: окно с меню (2) public static JMenu createFileMenu() { JMenu fileMenu = new JMenu("File"); fileMenu.setMnemonic(KeyEvent.VK_F); fileMenu.add(new JMenuItem("Open")); fileMenu.add(new JMenuItem("Save")); fileMenu.add(new JSeparator()); fileMenu.add(new JMenuItem("Exit")); return fileMenu; }

19Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Пример: окно с меню (3)

20Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Работа с диалогами Класс JDialog Конструкторы JDialog(owner, title, modal) Свойства String title -- заголовок boolean modal – модальность

21Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Стандартные диалоги Класс JOptionPane Методы showConfirmDialog(…) – да/нет/отмена showInputDialog(…) – ввод текста showMessageDialog(…) – информация showOptionDialog(…) – выбор из списка Параметры parentComponent – родительская компонента message – сообщение optionType – набор кнопок messageType – вид иконки

Компоновщики Часть 3

23Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Компоновщики Размещают компоненты внутри контейнера Интерфейс java.awt.LayoutManager

24Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Работа компоновщика Разместить компоненты так, что бы удовлетворялись рекомендации Рекомендации по размеру Dimension minimumSize – минимальный Dimension preferredSize – наилучший Dimension maximumSize -- максимальный

25Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Применение компоновщиков JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(new JButton( "1), BorderLayout.PAGE_START ); panel.add(new JButton( "1), BorderLayout.PAGE_END );

26Georgiy KorneevJava Advanced / Интерфейс пользователя 1 FlowLayout Компоненты выкладываются одна за другой, с переносом строк Свойства alignment – выравнивание LEADING, CENTER, TRAILING vgap / hgap – расстояние по горизонтали / вертикали

27Georgiy KorneevJava Advanced / Интерфейс пользователя 1 BorderLayout Компоненты располагаются по краям Свойства vgap / hgap – расстояние по вертикали / горизонтали

28Georgiy KorneevJava Advanced / Интерфейс пользователя 1 GridLayout Компоненты располагаются в виде таблицы Свойства rows / columns – количество строк / столбцов vgap / hgap – расстояние по вертикали / горизонтали

29Georgiy KorneevJava Advanced / Интерфейс пользователя 1 BoxLayout Выкладывает компоненты горизонтально / вертикально Конструктор BoxLayout(container, axis) PAGE_AXIS, LINE_AXIS

30Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Другие компоновщики CardLayout – помещает компоненты друг за другом GridBagLayout – помещает компоненты в гибкую таблицу SpringLayout – очень гибкий компоновщик, используется при кодогенерации

31Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Запуск компоновщика Автоматически – при изменении размера контейнера В ручную invalidate() – запросить перекомпоновку компоненты и всех ее предков revalidate() – thead-safe invalidate()

Примеры компонент Часть 4

33Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Класс JPanel Простейший контейнер Конструктор JPanel(LayoutManager) Свойства layoutManager -- компановщик

34Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Класс JLabel Метка с текстом Конструктор JLabel(text?, icon?) Свойства text – надпись на метке icon – картинка labelFor – для какой компоненты

35Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Класс JScrollPane Панель с полосами прокрутки Конструктор JScrollPane(Component?, vsbPolicy?, hsbPolicy?) _SCROLLBAR_AS_NEEDED _SCROLLBAR_NEVER _SCROLLBAR_ALWAYS

36Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Иконки Класс ImageIcon Конструктор ImageIcon(url) – загрузить по URL ImageIcon(file) – загрузить из файла Методы getIconHeight() – высота иконки getIconWidth() – ширина иконки getImage() – платформозависимый рисунок Применение frame.setIconImage(icon.getImage()) new JLable(icon);

37Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Класс JSplitPane Разделяет контейнер на две части Конструктор JSplitPane (orientation) HORIZONTAL_SPLIT VERTICAL_SPLIT Свойства leftComponent – компонента слева rightComponent – компонента справа

Обрамление Часть 5

39Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Обрамление Каждая компонента может иметь обрамление в виде рамки Пакет javax.swing.border Класс Border Метод Component.setBorder(Border)

40Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Размер обрамления Размер обрамления вычитается из размера компоненты Класс Insets Конструктор Insets(left, right, bottom, top) Поля left – отступ слева right – отступ справа bottom – отступ снизу top – отступ сверху

41Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Типы обрамлений Простые Наборные С заголовком Составные

42Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Простые обрамления Классы EmptyBorder – пустое место LineBorder – линия EtchedBorder – объемность BevelBorder – выпуклость / вдавленность

43Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Наборные обрамления Обрамление набирается из рисунка Класс MatteBorder

44Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Обрамления с заголовком Свойства justification – горизонтальное местоположение position – вертикальное местопложение Создается на основе другого обрамления Класс TitledBorder

45Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Составное обрамление Объединяет два обрамления Класс CompoundBorder Конструктор CompoundBorder(insideBorder, outsideBorder)

46Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Фабрика обрамлений Класс BorderFactory Методы create Border(properties)

Swing и потоки Часть 6

48Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Swing и потоки Обработка сообщений и перерисовка интерфейса пользователя происходят в потоке событий (EventThread) Если занять EventThread, GUI зависнет С видимыми компонентами можно оперировать только в EventThread GUI рекомендуется создавать в EventThread

49Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Видимые компоненты Компонента считается видимой, если Она добавлена к видимому контейнеру Окна считаются видимой После вызова метода pack() После вызова setVisible(true)

50Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Исполнение действий в EventThread Класс SwingUtilities Методы invokeLater(Runnable) – выполнить метод run() в EventThread invokeAndWait(Runnable) – выполнить метод run() в EventThread и дождаться окончания

Заключение Часть 7

52Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Ссылки Creating a GUI with JFC/Swing (Tutorial) // Java Foundation Classes // Swing Connection //

53 СПбГУ ИТМО Georgiy KorneevJava Advanced / Интерфейс пользователя 1 Вопросы