Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники 2020-2021 / Лекция 5.ppt
Скачиваний:
81
Добавлен:
15.06.2021
Размер:
660.99 Кб
Скачать

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 поставить первым ->

Соседние файлы в папке Заочники 2020-2021