Język Java. Rysowanie GUI Określanie wyglądu komponentów



Podobne dokumenty
Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit)

Grafika i komunikacja człowiek komputer Laboratorium. Część 3: Tekst, czcionki, kolory

Grafika i komunikacja człowiek komputer Laboratorium. Część 1: Wstęp do grafiki

Tworzenie elementów graficznych

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com

4. W konstruktorze klasy Grafika wywołaj metodę określającą rozmiary ramki oraz ustaw kolor tła metodą setbackground():

Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

Laboratorium z informatyki sem. III/ćw. 2 Wydział Transportu PW /19 MATERIAŁY POMOCNICZE DO ĆWICZENIA 2

Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Podstawy Swing. Tomasz Borzyszkowski

Wykład 11: Programowanie Apletów

Programowanie Multimediów. Programowanie Multimediów JAVA. grafika w JAVA 2D API [1]

Grafika i komunikacja człowiek komputer Laboratorium. Część 2: Graphics

Praktyczny kurs Java. Wydanie II

Programowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie komputerów Wykład 6: Aplety Java

Programowanie zdarzeniowe

Programowanie obiektowe

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Kontenery i komponenty graficzne

Podstawy programowania GUI niskiego poziomu. APLETY.

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Informatyka i Ekonometria Programowanie komputerów Ćwiczenia Tworzenie aplikacji wykorzystaniem graficznego interfejsu użytkownika - Swing.

Programowanie w języku Java

Języki i metody programowania Java Obsługa zdarzeń - przykłady

Podstawy Języka Java

II Tworzenie klasy Prostokąt dziedziczącej z klasy wątku

Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Język JAVA podstawy. Wykład 5, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 5, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

Programowanie obiektowe

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

Szybkie tworzenie grafiki w GcIde

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

Java niezbędnik programisty spotkanie nr 12. Graficzny interfejs użytkownika

Rozdział 6 Grafika i multimedia w Javie

INSTRUKCJA DO ĆWICZENIA 5

Wzorzec projektowy Obserwator idiomatyczne rozwiązanie

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

Programowanie komponentowe

Java. Wykład 9. Piotr Tronczyk

Multimedia i interfejsy. Ćwiczenie 5 HTML5

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Wykład 4_1. Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy.

PWŚG Ćwiczenia 13. Ukończoną pracę należy przesłać na adres lub

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

Graphic User Interfaces pakiet Swing

Język Java część 2 (przykładowa aplikacja)

Ćwiczenia 9 - Swing - część 1

Programowanie graficznych interfejsów użytkownika

Język Java część 2 (przykładowa aplikacja)

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

Programowanie obiektowe

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Kurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Laboratorium z informatyki sem.iii/ćw. 4 Wydział Transportu PW /19

Spis treści. 1 Aplet. 2 Od aplikacji do apletu. 1 Aplet 1. 2 Od aplikacji do apletu 1. 3 Budowa apletu 3. 4 Cykl życia apletu 4

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

Java jako zdalny interfejs aplikacji Webowych aplety

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Java - interfejs graficzny

1. Kształty, w których można tworzyć dowolne kształty geometryczne jako kombinacje linii prostych, krzywych, prostokątów, elips i łuków.

Wstęp do JUNG. Omówione elementy wykorzystane w Edge Color Project

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Multimedia JAVA. Historia

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

STWORZENIE PRZYKŁADOWEJ

Paweł Kaźmierczak. styczeń 2009

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

PROJEKTOWANIE ABSTRAKCYJNEJ KLASY FIGURA PRZECHOWUJĄCEJ WSPÓLNE CECHY OBIEKTÓW GRAFICZNYCH

Applety Java. Applety są przykładem kodu Java wykonywanego po stronie klienta, ale bez ujawnionej (jak w przypadku skryptu) wersji źródłowej

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie w języku JAVA. Wykład IV Swing - GUI

3.4. Opis konfiguracji layoutów.

czyli Arkuszy / Układów na podstawie modelu

Języki i metody programowania Java. Wykład 2 (część 2)

Java SE Laboratorium nr 5. Temat: Obsługa zdarzeń

Programowanie Multimediów JAVA. wprowadzenie do programowania (2/3) [1]

Programowanie w Javie Wykład 6 Okienka w Javie (AWT)

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Kurs WWW. Paweł Rajba.

Następnie zdefiniujemy utworzony szkic jako blok, wybieramy zatem jak poniżej

Microsoft Small Basic

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

Zakład Teoretycznych Podstaw Informatyki Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Transkrypt:

Język Java Rysowanie GUI Określanie wyglądu komponentów

Rysowanie GUI Rysowanie GUI w Swingu np. przy pierwszym wyświetleniu przy ponownym odsłonięciu przy zmianach stanu programu Kolejność rysowania - zgodnie z hierarchią komponentów Każdy komponent rysuje się sam 2

Kolejność rysowania GUI Przykład - aplikacja AplikSwing JFrame - rysuje ramkę panel z zawartością (content pane) - rysuje tło (szary prostokąt) JLabel - rysuje tekst etykiety JButton - rysuje przycisk i ewentualny napis 3

Własności komponentu Komponent może być przezroczysty nieprzezroczysty (opaque) - z tłem Na komponencie można rysować Ustawianie kolorów wyglądu czcionki komponentu obramowania 4

Kolejność rysowania komponentu 5

Przerysowywanie komponentu Przerysowanie komponentu - automatyczne Wymuszenie przerysowania - metoda repaint() W przypadku zmiany rozmiaru lub pozycji komponentu - wywołanie metody revalidate() przed repaint() 6

Grafika Podstawowe operacje graficzne np. rysowanie linii rysowanie figur rysowanie znaków tekstu wstawianie obrazów Operacje - zdefiniowane jako metody klasy java.awt.graphics Obiekt klasy Graphics przechowuje aktualne ustawienia stanu graficznego 7

Grafika: rysowanie Rysowanie - na dowolnym komponencie Najczęściej - rysowanie na panelu (JPanel) Wszystkie polecenia rysowania - w metodzie paintcomponent() klasy JComponent (konieczność przesłonięcia) Argument metody - obiekt klasy Graphics 8

Układ współrzędnych komponentu (0,0) x y jednostka układu współrzędnych - piksel (szer-1, wys-1) 9

Ustalanie wymiarów komponentu Określanie wymiarów komponentu (metody klasy JComponent) int getwidth() int getheight() Rysowanie obramowania - zmniejszenie wymiaru komponentu Określenie rozmiaru obramowania - metoda getinsets(), np. Insets b = getinsets(); s = getwidth() - b.left - b.right; w = getheight() - b.top - b.bottom; 10

Grafika: dostępne kształty Linia (Line) Figury prostokąt (Rect) prostokąt z efektem 3D (3DRect) prostokąty o zaokrąglonych brzegach (RoundRect) owal - okrąg lub elipsa (Oval) łuk (Arc) Wieloboki (Polygon, Polyline) 11

Grafika: rysowanie kształtów Rysowanie linii void drawline(x1, y1, x2, y2) Rysowanie figur tylko brzegi - metoda drawxxx() brzegi i wypełnienie - metoda fillxxx () Przykład - rysowanie prostokąta void fillrect(xlg, ylg, szer, wys) void drawrect(xlg, ylg, szer-1, wys-1) Wymiary - liczby całkowite (int) 12

Grafika: rysowanie kształtów Wieloboki - argument w postaci grupy par współrzędnych x i y wierzchołków Owale - argumenty współrzędne x i y lewego górnego rogu obszaru, w który zostanie wpisany owal szerokość i wysokość owalu Łuki - argumenty jak dla owalu oraz kąt, od jakiego zacznie się rysowanie łuku kąt określający rozpiętość łuku 13

Aplet Rysunek import javax.swing.*; import java.awt.*; public class Rysunek extends JApplet { public void init() { panelrys mojpanel = new panelrys(); getcontentpane().add(mojpanel, BorderLayout.CENTER); } } 14

class panelrys extends JPanel { public void paintcomponent(graphics g) { super.paintcomponent(g); // tło Insets w = getinsets(); int X = getwidth() - w.left - w.right; int Y = getheight() - w.top - w.bottom; int x1 = X/4; int y1 = Y/4; int szer = X/2; int wys = Y/2; g.drawrect(x1, y1, szer, wys); g.fillrect(szer, y1, x1, y1); int x2 = x1/2; int y2 = y1/2; g.drawline(x1+x2, y2, x1+x2, y1+wys+y2) } } 15

Obrazy Obrazy (formaty GIF i JPEG) - przechowywane jako odrębne pliki Obraz - obiekt klasy java.awt.image Metody klasy Image zwracające wymiary obrazu - getwidth() i getheight() Umieszczanie obrazu na komponencie kopiowanie do komponentu wyświetlanie 16

Obrazy: kopiowanie (aplikacje) Metoda getimage() klasy java.awt.toolkit Image getimage(url url) Image getimage(string plik) Przykład Toolkit tk; Image rys1, rys2; tk = Toolkit.getDefaultToolkit(); rys1 = tk.getimage("obrazek.gif"); rys2 = tk.getimage(new URL(http://www.new.pl/rys/p1.gif)); 17

Obrazy: kopiowanie (aplety) Metoda getimage() klasy Applet Image getimage(url url) Image getimage(url url, String plik) Metody klasy Applet zwracające obiekty klasy URL getcodebase() - adres URL katalogu z apletem getdocumentbase() - adres URL katalogu z dokumentem HTML Przykład Image rys = getimage(getdocumentbase,"plik.gif"); 18

Obrazy: wyświetlanie Wyświetlanie - metoda drawimage() klasy Graphics Sposoby wyświetlania obraz w jego oryginalnych wymiarach void drawimage(obraz, x, y, this); obraz przeskalowany void drawimage(obraz, x, y, szer, wys, this); Argumenty metody x, y - współrzędne lewego górnego rogu obrazu 19

Aplet Obraz import javax.swing.*; import java.awt.*; public class Obraz extends JApplet { public void init() { Image obraz=getimage(getcodebase(), "fotki/foto.jpg"); panelobraz mojpanel = new panelobraz(obraz); getcontentpane().add(mojpanel, BorderLayout.CENTER); } } 20

class panelobraz extends JPanel { Image obraz; public panelobraz(image obraz) { this.obraz = obraz; } public void paintcomponent(graphics g) { super.paintcomponent(g); int a = obraz.getwidth(this); int b = obraz.getheight(this); g.drawimage(obraz, 0, 0, this); g.drawimage(obraz, a, 0, a+10, b/2, this); } } 21

Widok apletu Obraz 22

Tekst Klasy z pakietu java.awt odpowiedzialne za wygląd tekstu Font - określa rodzaj, styl i wielkość czcionki FontMetrics - określa szczegółowo parametry czcionki - tzw. metrykę (np. wysokość i szerokość liter) Rysowanie tekstu na komponencie komponenty Swingu metoda drawstring() klasy Graphics 23

Tekst: wybór rodzaju czcionki Argumenty konstruktora klasy Font nazwa czcionki, np. "TimesRoman" ("serif"), "Courier" ("monospaced"), "Helvetica" ("sanserif") styl czcionki, np. Font.PLAIN, Font.BOLD, Font.ITALIC (można dodawać) wielkość czcionki Jeśli użyta czcionka nie jest dostępna, Java użyje czcionki domyślnej Ustawienie czcionki aktualnej - setfont() 24

Tekst: rysowanie, klasa Graphics Rysowanie tekstu o parametrach określonych aktualną czcionką void drawstring("tekst", x, y) Przykład Font f = new Font("TimesRoman", Font.PLAIN, 30); g.setfont(f); s = "Java"; g.drawstring(s, 50, 50); 25

Tekst: wymiary czcionki Height Xy Ascent Descent Leading a 26

Tekst: metryka czcionki Metody klasy FontMetrics stringwidth(string) - zwraca szerokość łańcucha znaków (w pikselach) charwidth(char) - zwraca szerokość znaku getascent() getdescent() getleading() getheight() 27

Kolory Kolory i metody operujące na kolorach - definicje w klasie java.awt.color Abstrakcyjne wzorzec koloru - kombinacja wartości kolorów podstawowych (RGB) - liczb z zakresu 0 255, np. Color k = new Color(100, 50, 150); Kolor niedostępny w systemie - zastępowany podobnym 28

Kolory: nazwy i wartości RGB Color.black 0, 0, 0 Color.white 255, 255, 255 Color.red 255, 0, 0 Color.green 0, 255, 0 Color.blue 0, 0, 255 Color.gray 128, 128, 128 Color.lightGgray 192, 192, 192 Color.darkGray 64, 64, 64 Color.magenta 255, 0, 255 Color.yellow 255, 255, 0 Color.cyan 0, 255, 255 Color.pink 255, 175, 175 Color.orange 255, 200, 0 29

Określanie wyglądu komponentu Metoda klasy JComponent ustawiająca przezroczystość komponentu - setopaque(boolean), np. przeroczysty: komponent.setopaque(false); Kontrola przezroczystości - getopaque() Metoda klasy JComponent ustawiająca czcionkę komponentu - setfont(font) Informacje o czcionce - getfont(), getfontmetrics() 30

Określanie wyglądu komponentu Metody klasy JComponent ustawiające kolor setbackground(color) - tła setforeground(color) - pierwszego planu Analogiczne metody zwracające ustawienia getbackground(), getforeground() Ustawianie koloru, np. komponent.setbackground(color.red); Ustawianie własnego koloru, np. Color c = new Color(150, 10, 150); komponent.setforeground(c); 31

Aplet Kolory import javax.swing.*; import java.awt.*; public class Kolory extends JApplet { public void init() { Font c = new Font("sanserif", Font.ITALIC, 40); JLabel napis = new JLabel("Java", JLabel.CENTER); Container kont = getcontentpane(); kont.add(napis); } } napis.setopaque(true); napis.setbackground(color.yellow); napis.setforeground(color.blue); napis.setfont(c); 32

Widok apletu Kolory 33

Określanie wyglądu komponentu Metody klasy JComponent określające wymiary elementu int getwidth() int getheight() Dimension getsize() Dimension getpreferredsize() Dimension getmaximumsize() Dimension getminimumsize() Inne metody np. void setpreferredsize(dimension) 34

Obramowanie komponentu Dodawanie obramowania - metoda setborder() klasy JComponent Typy obramowania (klasa javax.swing.borderfactory) Line, Etched, LoweredBevel, RaisedBevel, Empty, Matte, Titled, Compound Tworzenie obramowania - createxxxborder() Przykład b=borderfactory.createlineborder(color.black); komponent.setborder(b); 35

Obramowania: rodzaje 36

Obramowania: rodzaje 37

Obramowania: rodzaje 38

Obramowania: rodzaje 39

Aplet Kropki import java.awt.event.*; import javax.swing.*; import java.awt.*; public class Kropki extends JApplet { JLabel tekst = new JLabel("Kliknij w dowolnym miejscu białego obszaru!", JLabel.LEFT); myszpanel panel = new myszpanel(); 40

public void init() { Container kont = getcontentpane(); tekst.setopaque(true); tekst.setbackground(color.yellow); panel.setopaque(true); panel.setbackground(color.white); panel.setforeground(color.blue); panel.setborder( BorderFactory.createEtchedBorder()); } } kont.add(panel, BorderLayout.CENTER); kont.add(tekst, BorderLayout.SOUTH); 41

class myszpanel extends JPanel { Point p; public myszpanel() { addmouselistener(new MouseAdapter() { public void mousepressed(mouseevent zd) { int x = zd.getx(); int y = zd.gety(); if (p == null) p = new Point(x, y); else { p.x = x; p.y = y; } repaint(); } }); } 42

public void paintcomponent(graphics g) { super.paintcomponent(g); if (p!= null) g.filloval(p.x-10, p.y-10, 20, 20); } } 43

Java 2D Java 2D - zbiór dodatkowych klas dostarczających programom wysokiej jakości grafiki dwuwymiarowej Java2D umożliwia m.in. ustalenie rodzaju wypełnienia (np. gradienty) ustalenie szerokości i rodzaju linii przesuwanie, obracanie, skalowanie tekstu i grafiki Współrzędne w Java2D typu float 44

Java 2D: Klasa Graphics2D Operacje rysowania grafiki - klasa Graphics Java2D używa obiektu klasy Graphics2D (pakiet java.awt) konieczność rzutowania Przykład metoda paintcomponent() public void paintcomponent(graphics g) { Graphics2D g2d=(graphics2d)g; // treść metody } 45

Java 2D: metody grafiki 2D Wykonywanie wszystkich operacji grafiki 2D - na obiektach klasy Graphics2D, nawet jeśli metody 2D i nie-2d sa takie same Przykład definiowanie kolorów g2d.setcolor(color.black); Dodatkowe klasy grafiki 2D - w pakiecie java.awt.geom - np. Line2D, Line2D.Float, Point2D, Rectangle2D, Rectangle2D.Float 46

Java 2D: rodzaje wypełnienia Wypełnianie w Java2D metoda setpaint() Rodzaje wypełnień kolorem gradientami teksturą własnym wzorem Interfejs Paint zawiera klasy GradientPaint, TexturePaint i Color 47

Java 2D: wypełnianie gradientami Konstruktory klasy GradientPaint GradientPaint(x1, y1, kolor1, x2, y2, kolor2) GradientPaint(x1, y1, kolor1, x2, y2, kolor2, true) Rysowanie gradientu początek w punkcie x1,y1 - kolor kolor1 koniec w punkcie x2,y2 - kolor kolor2 true określa, czy gradient ma być rysowany cyklicznie 48

Aplet Gradient import javax.swing.*; import java.awt.*; import java.awt.geom.*; public class Gradient extends JApplet { public void init() { panelrys mojpanel = new panelrys(); getcontentpane().add(mojpanel, BorderLayout.CENTER); } } 49

class panelrys extends JPanel { public void paintcomponent(graphics g){ super.paintcomponent(g); Dimension d = getsize(); int s = d.width; int w = d.height; Graphics2D g2d = (Graphics2D)g; GradientPaint wzor = new GradientPaint(0, 0, Color.white, s, w,color.blue); g2d.setpaint(wzor); Rectangle2D.Float pr = new Rectangle2D.Float(0, 0, s, w); g2d.fill(pr); } } 50

Widok apletu Gradient 51

Java 3D Java 3D - zbiór klas umożliwiających tworzenie rzeczywistości wirtualnej, rozszerzenie pakietu JDK Najważniejsze klasy Javy 3D - w pakietach javax.media.j3d i javax.vecmath 52