- •Основы Java
- •ООП в Java. Вложенные и внутренние классы
- •ООП в Java. Вложенные и внутренние классы
- •ООП в Java. Вложенные и внутренние классы
- •ООП в Java. Вложенные и внутренние классы
- •ООП в Java. Вложенные и внутренние классы
- •ООП в Java. Вложенные и внутренние классы
- •ООП в Java. Обобщения
- •ООП в Java. Обобщения
- •ООП в Java. Обобщения. Ограниченные типы
- •ООП в Java. Обобщения. Ограниченные типы
- •ООП в Java. Обобщения. Шаблон аргумента.
- •ООП в Java. Обобщения. Шаблон аргумента.
- •ООП в Java. Обобщения. Ограниченный шаблон аргумента.
- •ООП в Java. Обобщения. Обобщенные методы
- •ООП в Java. Обобщения. Обобщенные методы
- •ООП в Java. Обобщения. Обобщенные методы
- •ООП в Java. Обобщения. Обобщенные методы
- •ООП в Java. Обобщения. Обобщенные конструкторы
- •ООП в Java. Обобщения. Обобщенные конструкторы
- •ООП в Java. Некоторые примеры использования обобщений
- •ООП в Java. Обобщения. Обобщенные интерфейсы
- •ООП в Java. Обобщения. Обобщенные интерфейсы
- •ООП в Java. Автоматическое определение аргументов типа
- •ООП в Java. Обобщения. Очистка
- •ООП в Java. Ограничения в использовании обобщений
- •ООП в Java. Ограничения в использовании обобщений
- •GUI в Java
- •GUI в Java. AWT
- •GUI в Java. SWING
- •GUI в Java. JavaFX
- •GUI в Java. Создание простого GUI в SWING
- •GUI в Java. Создание простого GUI в SWING
- •GUI в Java. Менеджеры компоновки в SWING
- •GUI в Java. Панели фрейма
- •GUI в Java. Создание фрейма (окна) приложения
- •GUI в Java. Создание фрейма (окна) приложения Лекция 5
- •GUI в Java. Создание компонента для публикации «Hallo Java»
- •GUI в Java. Размещение компонента во фрейме
- •GUI в Java. Размещение нескольких компонетов
- •GUI в Java. Рисование двумерных форм. Библиотека Java 2D
- •GUI в Java. Рисование двумерных форм. Библиотека Java 2D
- •GUI в Java. Работа со шрифтом и цветом
- •GUI в Java. Абсолютное позиционирование
- •GUI в Java. Абсолютное позиционирование
- •GUI в Java. Абсолютное позиционирование
- •GUI в Java. Абсолютное позиционирование
GUI в Java. JavaFX |
Лекция 5 |
JavaFX появился как ответ на повышенные требования к «красоте» и функциональности приложений (2011 г.).
JavaFX содержит дополнительные новые контролы и графические темы, в том числе для рисования диаграмм и 3D.
JavaFX использует некоторые подходы к GUI, принятые в Интернет. В частности создание и настройку GUI с использованием CSS и XML. Это позволяет привлекать для создания приложений «верстальщиков».
JavaFX использует структурно-событийную модель, похожую на DOM модель документа в Интернет.
GUI в Java. Создание простого GUI в SWING |
Лекция 5 |
1.Создать фрейм.
2.Создать контрол (графический элемент управления)
3.Разместить контрол в панели контента фрейма
Фрейм это то, что обычно называют «окном». Изолированная область, которую можно перемещать по экрану и имеющую кнопки свертывания, развертывания и закрытия.
Панель – способ организации пространства внутри фрейма
Контрол – элемент управления. Элементарность означает неделимость по отношению к вышележащему уровню панелей.
В SWING cуществует библиотека, содержащая десятки контролов: JButton, JCheckBox, JLabel и т.д.
Интересный ресурс по SWING - https://javaswing.wordpress.com/
GUI в Java. Создание простого GUI в SWING |
Лекция 5 |
Панели в которых можно размещать контролы, сами размещаются внутри фрейма одним из менеджеров компоновки.
Основные менеджеры компоновки:
BorderLayout – позволяет разместить компоненты в 5-ти панелях. Используется по умолчанию
BoxLayout – выравнивание размещаемых компонентов по вертикали или горизонтали
CardLayout – компоненты размещаются как колода карт – один под другим
FlowLayout – компоненты размещаются один за другим и переносятся на следующую строку, если не помещаются во фрейм
GridLayout – компоненты помещаются в сетке с ячейками фиксированной ширины и высоты
GridBagLayout – компоненты разных размеров размещаются в сетке с ячейками регулируемых размеров
GUI в Java. Менеджеры компоновки в SWING |
Лекция 5 |
GUI в Java. Панели фрейма |
Лекция 5 |
ContentPane — панель контента (содержимого) содержит компоненты JmenuBar – содержит главное меню приложения.
LayeredPane используется для отображения всплывающего меню, диалоговых окон и визуализации процесса перетаскивания элементов мышью. Она называется панелью слоев потому, что каждое из этих действий реализуется в отдельном
подслое панели слоев.
GlassPane (стеклянная панель ) позволяет, когда это нужно, помещать компоненты поверх компонентов панели содержимого (контента).
GUI в Java. Создание фрейма (окна) приложения |
Лекция 5 |
Весь GUI приложения, начиная от фрейма должен быть помещен в потоке диспетчеризации событий - EventQueue т. е. в потоке который может перехватывать и передавать эти события элементам GUI
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
... операторы ...
}
});
}
Создавая фрейм мы должны определить для него 3 параметра:
1. Действие при нажатии на кнопке закрытия фрейма
Т.к. по закрытию фрейма программа не прекращает работу
2.Размеры фрейма
Т.к. по умолчанию они 0х0
3.Видимость фрейма
Т.к. по умолчанию фрейм не виден
GUI в Java. Создание фрейма (окна) приложения Лекция 5
import java.awt.*; import javax.swing.*;
public class SimpleFrameTest {
public static void main(String[] args) { EventQueue.invokeLater(new Runnable() {
public void run() {
SimpleFrame frame = new SimpleFrame(); frame.setTitle("DrawTest");
//Определяем заголовок фрейма frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Определяем, что программа завершит работу при закрытии фрейма frame.setVisible(true);
//Делаем фрейм видимым
}
});
}
}
class SimpleFrame extends JFrame { private int DEF_Width = 300; private int DEF_Height = 200;
public SimpleFrame() {
setSize(this.DEF_Width, this.DEF_Height ); //Устанавливаем размеры фрейма
}
}
GUI в Java. Создание компонента для публикации «Hallo Java» |
Лекция 5 |
class HelloJavaComponent extends JComponent |
|
{ |
|
public static final int MES_X = 20; public static final int MES_Y = 20;
//Определяем координаты левой верхней точки прямоугольника //содержащего компонент относительно левой верхней точки фрейма
private static final int DEF_WIDTH = 200; private static final int DEF_HEIGHT = 100;
//Определяем предпочтительные размеры прямоугольника, //содержащего компонент
public void paintComponent(Graphics g) { g.drawString("Hallo Java", MES_X, MES_Y);
}
public Dimension getPreferredSize() {
return new Dimension(DEF_WIDTH, DEF_HEIGHT);
//Метод возвращает предпочтительные размеры компонента
}
}
GUI в Java. Размещение компонента во фрейме |
Лекция 5 |
Созданный компонент добавляется в панель контента методом add().
public class SimpleFrameTest {
public static void main(String[] args) { EventQueue.invokeLater(new Runnable() {
public void run() {
SimpleFrame frame = new SimpleFrame(); frame.setTitle("DrawTest"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);
}
});
}
}
class SimpleFrame extends JFrame {
public SimpleFrame() {
add(new HelloJavaComponent()); //Создаем и добавляем компонент во фрейм pack(); //Устанавливаем размеры фрейма по размерам компонента(ов)
}
}
class HelloJavaComponent extends JComponent
{
...
}
GUI в Java. Размещение нескольких компонетов |
Лекция 5 |
class SimpleFrame extends JFrame
{
private int DEF_Width = 300; private int DEF_Height = 500; public SimpleFrame() {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout()); panel.add(new JButton("Кнопка")); panel.add(new JButton("+")); panel.add(new JButton("-"));
panel.add(new JButton("Кнопка с длинной надписью")); panel.add(new HelloJavaComponent()); setContentPane(panel);
setSize(this.DEF_Width, this.DEF_Height );
}
}
Если HalloJavaComponent поставить первым ->