## Графические библиотеки Java
- **Abstract Windows Toolkit (AWT)** - поставляется с JDK, каждый компонент AWT имеет свой визуальный компонент (peer) для конкретной ОС
- **Swing** - поставляется с JDK, расширяет классы AWT, не зависит от perr-компонентов ОС
- **Java 3D API** - трехмерная графика
#### Иерархия классов AWT
![Иерархия классов AWT](../Pictures/05_01.%20Иерархия%20классов%20AWT.png)
## Диалоги
Диалоговые окна могут быть модальными (фокус на окне, пока не нажата кнопка) или немодальными.

| Тип диалогового окна                                                                            | Описание                                                                                                                         |
| ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `INFORMATION_MESSAGE`  <br>![INFORMATION_MESSAGE](../Pictures/05_02.%20INFORMATION_MESSAGE.png) | Диалоговое окно выводит информацию общего назначения со значком соответствующего вида                                            |
| `WARNING_MESSAGE`  <br>![WARNING_MESSAGE](../Pictures/05_03.%20WARNING_MESSAGE.png)             | Диалоговое окно выводит на экран предупреждающую информацию со значком соответствующего вида                                     |
| `QUESTION_MESSAGE`  <br>![QUESTION_MESSAGE](../Pictures/05_04.%20QUESION_MESSAGE.png)           | Диалоговое окно вопроса для ввода информации                                                                                     |
| `ERROR_MESSAGE`  <br>![ERROR_MESSAGE](../Pictures/05_05.%20ERROR_MESSAGE.png)                   | Диалоговое окно выводит на экран информацию об ошибке со значком соответствующего вида                                           |
| `PLAIN_MESSAGE`                                                                                 | Указывает, что диалоговое окно не принадлежит ни к одному из вышеперечисленных типов. Выводится на экран без стандартного значка |
## Стандартные компоновщики Java
1. Компоновщик **BorderLayout** (полярное размещение)
2. Компоновщик **FlowLayout** (последовательное размещение)
3. Компоновщик **GridLayout** (табличное размещение)
4. Компоновщик **SpringLayout** (относительное размещение)
5. Компоновщик **BoxLayout** (блочное размещение)
## События и "слушатели"
| Интерфейсы            | Обработчики события                                                                                                                                                                                                      |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `ActionListener`      | `actionPerformed(ActionEvent e)`                                                                                                                                                                                         |
| `AdjustmentListener`  | `adjustmentValueChanged(AdjustmentEvent e)`                                                                                                                                                                              |
| `ComponentListener`   | `componentResized(ComponentEvent e)`<br>`componentMoved(CompomentEvent e)`  <br>`componentShown(ComponentEvent e)`  <br>`componentHidden(ComponentEvent e)`                                                              |
| `ContainerListener`   | `componentAdded(ContainerEvent e)`  <br>`componentRemoved(ContainerEvent e)`                                                                                                                                             |
| `FocusListener`       | `focusGained(FocusEvent e)`  <br>`focusLost(FocusEvent e)`                                                                                                                                                               |
| `ItemListener`        | `itemStateChanged(itemEvent e)`                                                                                                                                                                                          |
| `KeyListener`         | `keyPressed(KeyEvent e)`  <br>`keyReleased(KeyEvent e)`  <br>`keyTyped(KeyEvent e)`                                                                                                                                      |
| `MouseListener`       | `mouseClicked(MouseEvent e)`  <br>`mousePressed(MouseEvent e)`  <br>`mouseReleased(MouseEvent e)`  <br>`mouseEntered(MouseEvent e)`  <br>`mouseExited(MouseEvent e)`                                                     |
| `MouseMotionListener` | `mouseDragged(MouseEvent e)`  <br>`mouseMoved(MouseEvent e)`                                                                                                                                                             |
| `TextListener`        | `textValueChanged(TextEvent e)`                                                                                                                                                                                          |
| `WindowListener`      | `windowOpened(WindowEvent e)`  <br>`windowClosing(WindowEvent e)`  <br>`windowClosed(WindowEvent e)`  <br>`windowIconified(WindowEvent e)`  <br>`windowDeiconified(WindowEvent e)`  <br>`windowActivated(WindowEvent e)` |
## Vaadin
**Vaadin** в переводе с финского - самка молодого оленя.  
**Vaadin**:
- Интерфейс пользователя
- Темы
- Источники данных
## Apache Maven
**Maven** в переводе с идиша - накопитель знаний.  
**Apache Maven** - инструмент, который можно использовать для создания и управления любым проектом на основе Java:
- Упрощение процесса сборки
- Обеспечение единой системы сборки
- Предоставление качественной информации о проекте
- Поощрение лучших практик разработки
