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

Содержание

Слайд 7

ФРЕЙМ

Слайд 9

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

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

Слайд 11

Итак:

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

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

Слайд 12

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

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

Слайд 21

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

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

Слайд 22

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

Слайд 23

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

перемещать.

Слайд 24

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

Слайд 25

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

Слайд 26

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

строку текста.
Фрейм выводится на экран.

Слайд 27

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 создает окно с некоторой функциональностью, которая нуждается в правке.
Чтобы

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

Слайд 29

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

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

Слайд 31

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

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

Слайд 44

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

его на фрейм.

Слайд 45

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{
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 }

Слайд 49

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

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

Слайд 50

Метод рисования (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. Два независимых (равноправных) фрейма

Слайд 53

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 (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 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 () графический контекст

Слайд 59

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

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