'

Java Advanced

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

Java Advanced / Интерфейс пользователя 1 Содержание Компоненты и контейнеры Окна верхнего уровня Компоновщики Примеры компонент Обрамление Swing и потоки Заключение


Слайд 2

Java Advanced / Интерфейс пользователя 1 Интерфейс пользователя Платформозависимый интерфейс AWT Пакеты java.awt.* Платформонезависимый интерфейс Swing Пакеты javax.swing.*


Слайд 3

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


Слайд 4

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


Слайд 5

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


Слайд 6

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


Слайд 7

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


Слайд 8

Java Advanced / Интерфейс пользователя 1 Пример: кнопки на панели JPanel panel = new JPanel(new FlowLayout()); panel.add(new JButton("<html>e=mc<sup>2</sup></html>")); 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"));


Слайд 9

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


Слайд 10

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


Слайд 11

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


Слайд 12

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


Слайд 13

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


Слайд 14

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


Слайд 15

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


Слайд 16

Java 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; }


Слайд 17

Java 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; }


Слайд 18

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


Слайд 19

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


Слайд 20

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


Слайд 21

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


Слайд 22

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


Слайд 23

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


Слайд 24

Java 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);


Слайд 25

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


Слайд 26

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


Слайд 27

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


Слайд 28

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


Слайд 29

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


Слайд 30

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


Слайд 31

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


Слайд 32

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


Слайд 33

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


Слайд 34

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


Слайд 35

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


Слайд 36

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


Слайд 37

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


Слайд 38

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


Слайд 39

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


Слайд 40

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


Слайд 41

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


Слайд 42

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


Слайд 43

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


Слайд 44

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


Слайд 45

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


Слайд 46

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


Слайд 47

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


Слайд 48

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


Слайд 49

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


Слайд 50

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


Слайд 51

Java Advanced / Интерфейс пользователя 1 Ссылки Creating a GUI with JFC/Swing (Tutorial) // http://java.sun.com/docs/books/tutorial/uiswing/ Java Foundation Classes // http://java.sun.com/products/jfc/ Swing Connection // http://java.sun.com/products/jfc/tsc/


Слайд 52

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


×

HTML:





Ссылка: