Lektsia_2-10_-_GrafichPolzInterfeysy презентация

Содержание

Слайд 2

Слайд 3

Слайд 4

Слайд 5

Слайд 6

Слайд 7

ФРЕЙМ

ФРЕЙМ

Слайд 8

Слайд 9

Toolkit - |ˈtuːlkɪt| инструментарий, набор инструментов. СВИНГ (англ. swing –

Toolkit - |ˈtuːlkɪt|    инструментарий, набор инструментов.  
СВИНГ (англ. swing – качание – взмах

– поворачивание – разворачивание) – выразительное средство в джазе. Характерный тип пульсации, основанной на постоянных отклонениях ритма (опережающих или запаздывающих) от опорных долей.
Слайд 10

Слайд 11

Итак: Графический интерфейс - это средство, обеспечивающее взаимодействие пользователя и

Итак:

Графический интерфейс - это средство, обеспечивающее взаимодействие пользователя и программы при

помощи мышки, указатель (курсор) которой виден на экране, и при помощи клавиатуры.
Курсор может быть помещен в любое место экрана. Расположение курсора в определенном месте и нажатие кнопки воспринимается как указание для программы выполнить то или иное действие.
Для удобства пользователя "активные" части экрана сделаны визуально опознаваемыми.
Слайд 12

Разработка программы с ГИП предполагает: Умение поместить в нужное место

Разработка программы с ГИП предполагает:
Умение поместить в нужное место экрана подходящее

изображение.
2. Умение определить активность мышки (положение, нажатие кнопок), чтобы выполнить нужное действие в программе.
Слайд 13

Слайд 14

Слайд 15

Слайд 16

Слайд 17

Слайд 18

Слайд 19

Слайд 20

Слайд 21

При построении интерфейсов нужны компоненты-контейнеры, которые будут содержать другие компоненты

При построении интерфейсов нужны компоненты-контейнеры, которые будут содержать другие компоненты пользовательского

интерфейса. В Swing одним из таких компонентов-контейнеров является JPanel. По умолчанию JPanel сама по себе ничего не отрисовывает за исключением фона. При работе с контейнерами, разработчику надо решить, как правило, две основные проблемы. Первая – задать расположение дочерних компонентов и вторая – осуществить добавление компонентов на контейнер.
Слайд 22

Скроллинг – панель с полосами прокрутки.

Скроллинг – панель с полосами прокрутки.

Слайд 23

Компонент JSplitPane. Он представляет собой панель, разделенную на две области, границу между которыми пользователь может перемещать.

Компонент JSplitPane.  Он представляет собой панель, разделенную на две области, границу между которыми

пользователь может перемещать.
Слайд 24

Компонент JTabbedPane. Он представляет собой панель с вкладками

Компонент JTabbedPane.  Он представляет собой панель с вкладками

Слайд 25

JToolBar – панель инструментов

JToolBar – панель инструментов

Слайд 26

Пример 1. В программе создается фрейм, в котором содержится графический

Пример 1. В программе создается фрейм, в котором содержится графический элемент

«метка», представляющий строку текста.
Фрейм выводится на экран.
Слайд 27

1 import javax.swing.*; //пример из Sun Tutorial - проект GUI1_фрейм

1 import javax.swing.*; //пример из Sun Tutorial - проект GUI1_фрейм
2 public

class HelloWorldSwing{
3 private static void createAndShowGUI(){
JFrame frame = new JFrame("HelloWorldSwing");
//в качестве параметра передан заголовок окна
6 frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);//для х
7 JLabel label = new JLabel("Hello World"); // поле-метка
8 frame.getContentPane().add(label);
9 frame.setSize(400, 200); // можно frame.pack() -
10 // по размеру компонентов
11 frame.setVisible(true); // сделать видимым
12 }
13 public static void main (String [ ] args){
14 javax.swing.SwingUtilities.invokeLater(
15 new Runnable(){ //анонимный класс, ассоциированный с объектом
16 public void run(){ //точка входа для потока
17 createAndShowGUI();
18 } //окончание работы потока
19 });
20 }
21 }
Слайд 28

Пояснения к программе 1 JFrame создает окно с некоторой функциональностью,

Пояснения к программе 1
JFrame создает окно с некоторой функциональностью, которая нуждается

в правке.
Чтобы закрывать приложение, применен метод setDefaultCloseOperation() с параметром EXIT_ON_CLOSE.
В классе JFrame определена именованная константа:
public static final int EXIT_ON_CLOSE
Задает набор действий для операции закрытия окна по умолчанию (для программы выхода). Если окно имеет этот набор в качестве операции закрытия и закрывается в апплете, может возникнуть исключение SecurityException. Рекомендуется использовать это только в приложении.
Все объекты фрейма находятся на панели контента. Ссылку на панель контента возвращает метод getContentPane().
Метод add() применяется для добавления элемента к контенту. В примере создан объект label (new Jlabel…) и добавлен к контенту.
Слайд 29

В главном методе main() используется метод invokeLater() класса SwingUtilities: public

В главном методе main() используется метод invokeLater() класса SwingUtilities:
public static void

invokeLater(Runnable doRun)
Заставляет метод doRun.run () выполняться асинхронно в потоке диспетчеризации событий AWT. Это произойдет после обработки всех ожидающих событий AWT. Этот метод следует использовать, когда поток приложения должен обновить графический интерфейс.
Внимание! Впервые! Анонимный реализующий класс, ассоциированный с объектом!
В метод invokeLater передается объект безымянного (анонимного) класса, реализующего интерфейс Runnable, метод run() которого и запускает метод создания фрейма createAndShowGUI().
Класс, реализующий интерфейс Runnable задается не отдельно, а ассоциируется с объектом этого класса!
Слайд 30

Слайд 31

Работают кнопки контекстного меню, «свернуть/развернуть», «оконный режим», «закрыть» – в

Работают кнопки контекстного меню, «свернуть/развернуть», «оконный режим», «закрыть» – в Jframe

задана некоторая изначальная функциональность. Чтобы завершить программу, нужно нажать на кнопку «закрыть» или в контекстном меню выбрать пункт «закрыть».
Слайд 32

Слайд 33

Слайд 34

Слайд 35

Слайд 36

Слайд 37

Слайд 38

Слайд 39

Слайд 40

Слайд 41

Слайд 42

Слайд 43

Слайд 44

Пример 2. Создаем рисунок (видимый графический объект, который будет себя отрисовывать) и помещаем его на фрейм.

Пример 2. Создаем рисунок (видимый графический объект, который будет себя отрисовывать)

и помещаем его на фрейм.
Слайд 45

1 import java.awt.*; // Проект GUI 2_фрейм и фигуры 2

1 import java.awt.*; // Проект GUI 2_фрейм и фигуры
2 import javax.swing.*;


3 public class MyDrawing extends Jcomponent {
public MyDrawing () { } // конструктор
5 //Переопределяем метод paintComponent()
6 protected void paintComponent (Graphics g){
7 //графический контекст:
8 Graphics g2d = (Graphics2D)g;
9 g2d.setColor(Color.red); //смена цвета
10 g2d.drawRect(10,10,100,50);
11 g2d.drawOval(90,80,40,60);
12 g2d.setColor(Color.blue); //смена цвета
13 g2d.drawLine(250,150,100,200);
14 g2d.fillRect(150,100,100,50);
15 }
16 }

Этот метод доступен только потомкам класса JComponent. Никакие другие объекты не должны себя отрисовывать, иначе на экране могут появиться частично прорисованные объекты. Перерисовка должна выполняться только под управлением системы рисования. Двойная буферизация!!!

Слайд 46

1 import java.awt.*; 2 import javax.swing.*; 3 public class PrimeGraf1{

1 import java.awt.*;
2 import javax.swing.*;
3 public class PrimeGraf1{
4 private static

void createAndShowGUI(){
5 JFrame frame = new JFrame("Графические примитивы");
6 frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
7 MyDrawing md = new MyDrawing();
8 frame.getContentPane().add(md);
9 frame.setSize(400,300);
10 frame.setVisible(true);
11 }
12 // Создать и показать
13 public static void main (String [ ] args){
14 javax.swing.SwingUtilities.invokeLater(
15 new Runnable(){
16 public void run(){ //точка входа для потока
17 createAndShowGUI();
18 } //окончание работы потока
19 });
20 }
21 }
Слайд 47

Слайд 48

Слайд 49

Graphics, Graphics2D – классы, определяющие графический контекст. Контекст – это

Graphics, Graphics2D – классы, определяющие графический контекст.
Контекст – это набор значений

некоторых параметров (состояние графической среды).
Главное правило: полученный объект класса Graphics при выходе из метода рисования должен иметь то же состояние, что и в начале.
Слайд 50

Метод рисования (paintComponent ) перед окончанием своей работы должен вернуть

Метод рисования (paintComponent ) перед окончанием своей работы должен вернуть графический

контекст в первозданное состояние.
Два способа сохранения состояния графического контекста:
Graphics g2d = (Graphics2D)g;
Color cOld = g2d.getColor(); //запомнили цвет
Color cNew = new Color(Color.green);
g2d.setColor(cNew); //изменили цвет
...
g2d.setColor(cOld); //восстановили цвет
//Более радикальный способ:
Graphics g2d = (Graphics2D) g.create();
//g2d - копия контекста. Меняем как хотим!
g2d.setColor(Color.green);...
g2d.dispose(); //освободим ресурсы, выделенные копии контекста
Слайд 51

Фреймы-конкуренты Сложные программы помещают изображения в несколько окон. Обычно рассматривают

Фреймы-конкуренты
Сложные программы помещают изображения в несколько окон.
Обычно рассматривают два варианта:
1) главный

фрейм и его внутренние фреймы;
2) равноправные фреймы.
В случае 1) внутренние фреймы размещаются в пределах окна фрейма-хозяина.
В случае 2) фреймы независимы и каждый может занимать произвольное положение на экране и иметь независимые размеры.
Слайд 52

Пример 3. Два независимых (равноправных) фрейма

Пример 3. Два независимых (равноправных) фрейма

Слайд 53

1 import java.awt.*; //GUI 4_два фрейма 2 import javax.swing.*; 3

1 import java.awt.*; //GUI 4_два фрейма
2 import javax.swing.*;
3 public class

TwoFrames{
4 private static void createAndShowGUI(){
5 JFrame frame = new JFrame("Графические примитивы");
6 frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
7 JFrame frame2 = new JFrame(" 2 Графические примитивы");
8 frame2.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
9 MyDrawing md = new MyDrawing();
10 frame.getContentPane().setBackground(Color.green); //фон
11 frame.getContentPane().add(md);
12 frame.setSize(400,300);
13 frame.setVisible(true);
frame2.getContentPane().add(new Label(
15 "А вот и второе окно"));
16 frame2.pack(); //распахнуть окно (по размеру компонентов)
17 frame2.setVisible(true);
18 }
Слайд 54

19 // Создать и показать 20 public static void main

19 // Создать и показать
20 public static void main (String [

] args){
21 javax.swing.SwingUtilities.invokeLater(
22 new Runnable(){
23 public void run(){ //точка входа для потока
25 createAndShowGUI();
26 } //окончание работы потока
27 });
28 }
29 }
Слайд 55

1 import java.awt.*; 2 import java.awt.geom.*; 3 import javax.swing.*; 4

1 import java.awt.*;
2 import java.awt.geom.*;
3 import javax.swing.*;
4 public class MyDrawing

extends JComponent{
5 protected void paintComponent (Graphics g){
6 Graphics2D g2d = (Graphics2D)g.create();
7 g2d.setColor(Color.red); //смена цвета
8 g2d.draw(new Rectangle2D.Double(10,10,100,50));
9 g2d.draw(new Ellipse2D.Double(80,80,40,60));
10 g2d.setColor(Color.blue); //смена цвета
11 g2d.draw(new Line2D.Double(250,150,100,200));
12 g2d.fill(new Rectangle2D.Double(150,100,100,50));
13 g2d.dispose();
14 }
15 }

Класс подкорректирован, чтобы не «портить» переданный в метод paintComponent () графический контекст

Слайд 56

Слайд 57

Слайд 58

Слайд 59

Многослойная панель позволяет отображать компоненты в глубину, определяя порядок перекрытия

Многослойная панель позволяет отображать компоненты в глубину, определяя порядок перекрытия одних

компонентов другими. (Это означает, что панель слоя позволяет задавать расположение компонентов в глубину, хотя такая возможность используется сравнительно редко.) В состав многослойной панели входит панель содержимого и может также включаться строка меню.
Несмотря на то что прозрачная и многослойная панели являются неотъемлемыми частями контейнера верхнего уровня и выполняют важные функции, их действия по большей части скрыты не только от пользователей, но и от разработчиков прикладных программ.
Прикладная программа взаимодействует в основном с панелью содержимого, поскольку именно в нее включаются визуальные компоненты. Иными словами, добавляя компонент, например кнопку, в контейнер верхнего уровня, вы на самом деле вводите его на панели содержимого.
Имя файла: Lektsia_2-10_-_GrafichPolzInterfeysy.pptx
Количество просмотров: 36
Количество скачиваний: 0