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



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

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

Tworzenie elementów graficznych

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

Programowanie obiektowe

Kontenery i komponenty graficzne

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

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

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

Podstawy Języka Java

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

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

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

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

Podstawy Swing. Tomasz Borzyszkowski

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

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

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

Java - interfejs graficzny

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

Programowanie obiektowe

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

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

Programowanie obiektowe zastosowanie języka Java SE

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

Programowanie graficznych interfejsów użytkownika

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

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

LABORATORIUM 7 Cel: 1_1

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Zaawansowane programowanie obiektowe. Wykład 3 część 2

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

Java jako język programowania

Java Foundation Clases. Tworzenie graficznych interfejsów użytkownika (GUI) w Javie

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

Programowanie zdarzeniowe

Multimedia JAVA. Historia

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

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

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

1 Atrybuty i metody klasowe

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

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

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

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

Dokumentacja do API Javy.

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

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

Programowanie obiektowe

Programowanie Obiektowe GUI

Pierwsza ramka. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 10

Graphic User Interfaces pakiet Swing

Języki i metody programowania Java Lab2 podejście obiektowe

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Wstęp do programowania w języku Java

Bezpieczne uruchamianie apletów wg

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wstęp do programowania w języku Java

Aplikacje w środowisku Java

SWING. dr Jarosław Skaruz

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

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

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

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

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

Ćwiczenie 1. Przygotowanie środowiska JAVA

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

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

Java. Wykład 9. Piotr Tronczyk

Aplikacja wielowątkowa prosty komunikator

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

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

STWORZENIE PRZYKŁADOWEJ

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

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

Zaawansowane aplikacje WWW - laboratorium

Programowanie obiektowe

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

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

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

Programowanie komponentowe

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

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

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Programowanie w Javie

WPROWADZENIE DO JĘZYKA JAVA

Programowanie obiektowe

Wstęp do programowania w języku Java

Podstawy Języka Java

Aplikacje w środowisku Java

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Rozdział 4 KLASY, OBIEKTY, METODY

Aplikacja wielow tkowa prosty komunikator

WPROWADZENIE DO JĘZYKA JAVA

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

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

Programowanie obiektowe

Transkrypt:

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI Opracował: mgr inż. Przemysław Pardel, dr hab. Bogdan Kwolek v1.01 2010 Grafika i komunikacja człowiek komputer Laboratorium Część 1: Wstęp do grafiki ZAGADNIENIA DO ZREALIZOWANIA (2H) 1. Wprowadzenie... 2 2. Klasy wspomagające tworzenie grafiki... 2 2.1 Tworzenie obszaru do rysowania... 3 Przykład 1 do zrealizowania... 3 Przykład 2 do zrealizowania... 4 Przykład 3 do zrealizowania... 5 Przykład 4 do zrealizowania... 5 Przykład 5 do zrealizowania... 6 2.2 Rzutowanie obiektu Graphics2D... 7 Przykład 6 do zrealizowania. Listing 1... 7 2.4 Układ współrzędnych dla operacji graficznych... 9

1. WPROWADZENIE Technologia Java, stworzona przez firmę Sun Microsystems Inc., jest zorientowanym obiektowo, niezależnym od platformy systemowej, wielowątkowym środowiskiem programistycznym. Jedną z wielu możliwości jakie oferuje język programowania Java (będący częścią tej technologii) jest wsparcie dla tworzenia programów zawierających różnego rodzaju elementy graficzne. Oprócz standardowego graficznego interfejsu użytkownika (GUI), język ten umożliwia tworzenie bardziej zaawansowanej grafiki. Do przygotowywania aplikacji zawierających elementy graficzne wykorzystuje się dwie części składowe tego języka, którymi są JFC i Java 3D. JFC (Java Foundation Classes) jest zbiorem bibliotek klas Javy, które ułatwiają tworzenie graficznego interfejsu użytkownika (GUI) oraz innych obiektów graficznych. W skład JFC wchodzi między innymi: Abstract Window Toolkit (AWT): interfejs programisty, którego część stanowią proste komponenty GUI (Button, CheckBox, List, TextField, TextArea, Label, ScrollBar oraz ScrollPane) Swing GUI Components: interfejs programisty będący rozszerzeniem AWT, zawierający bogatą bibliotekę komponentów GUI, których wygląd może być dostosowywany do interfejsu graficznego różnych platform systemowych Java 2D: interfejs programisty umożliwiający: tworzenie zaawansowanej grafiki dwuwymiarowej, dokonywanie obróbki tekstu oraz wykonywanie operacji drukowania Wszystkie komponenty biblioteki Swing znajdują się w pakiecie javax.swing i jego podpakietach, zaś komponenty biblioteki AWT w pakiecie java.awt i jego podpakietach. Jednak dla łatwiejszego odróżniania klas Swing od klas AWT w bibliotece Swing wprowadzono następującą konwencję nazewniczą: nazwy wszystkich klas tej biblioteki zaczynają się od litery J, po czym następuje właściwa nazwa komponentu, np. JButton oznacza przycisk (ang. button). Celem wykorzystania grafiki w programach przygotowanych w języku Java można posłużyć się pakietami java.awt oraz javax.swing. Zawarte w nich klasy umożliwiają pracę z tekstem i rysowanie prostych kształtów, jak okręgi i wielokąty (np. w oknie apletu). Ponieważ biblioteka klas języka Java bardzo silnie wspiera tworzenie grafiki, to dzięki temu można osiągnąć wyrafinowane efekty graficzne przy użyciu relatywnie prostych poleceń. Java2D, czyli zestaw klas wprowadzony w wersji Java 2, oferuje (m.in.) następujące możliwości: obiekty wykorzystujące anti-aliasing, wypełnienia gradientowe, rysowanie linii o różnych grubościach. Java 3D jest interfejsem programisty wykorzystywanym do tworzenia trójwymiarowej grafiki będącej częścią aplikacji lub apletów. Interfejs Java 2D jest głównym tematem tego ćwiczenia. Została w nim wykorzystana dokumentacja Programmer's Guide to the Java 2DTM API - Enhanced Graphics and Imaging for Java, która została udostępniona przez konsorcjum Sun Microsystems. 2. KLASY WSPOMAGAJĄCE TWORZENIE GRAFIKI Większość operacji rysowania jest wspomagana przez metody zdefiniowane w klasie Graphics, będącej częścią pakietu java.awt. Obiekty tej klasy reprezentują środowisko umożliwiające rysowanie różnych elementów w oknach apletów, obszarach graficznego interfejsu użytkownika lub nawet na drukarce. Okno apletu może być traktowane jako swego rodzaju płótno, na którym wykonuje się operacje graficzne.

Przy pomocy klasy Graphics można rysować tekst, linie, okręgi, elipsy, łuki, prostokąty i różnego rodzaju wielokąty. Pracując z apletami, do rysowania nie trzeba tworzyć nowego obiektu klasy Graphics, gdyż jednym z parametrów metody paint() jest obiekt klasy Graphics. Ten obiekt re-prezentuje okno apletu i jego metody są używane do rysowania zawartości apletu. Klasa Graphics jest częścią pakietu java.awt, więc aplety posługujące się grafiką muszą zaimportować tą klasę, zanim będą mogły skorzystać z jej metod: import java.awt.graphics; public class MojAplet extends java.aplet.aplet { 2.1 TWORZENIE OBSZARU DO RYSOWANIA Aplikacja okienkowa musi posiadać swoje okno. Okno jest klasą dziedziczącą po klasie java.awt.window. Jednak w aplikacjach Swing będziemy najczęściej dziedziczyć po klasie javax.swing.jframe, która jest jej klasą pochodną. Najważniejsze metody klasy JFrame: JFrame() konstruktor domyślny tworzy nowe okienko, JFrame(String tytul) konstruktor tworzący okienko z ustalonym napisem na belce tytułowej, Container getcontentpane() zwraca panel zawartości, w którym należy umieszczać wszystkie komponenty, które mają się znaleźć w oknie aplikacji, void setcontentpane(container cp) ustawia panel zawartości dla aplikacji, void setdefaultcloseoperation(int operation) ustawia operację wykonywaną po zamknięciu aplikacji przez użytkownika, void setvisible(boolean widoczne) ustawia widzialność okienka. PRZYKŁAD 1 DO ZREALIZOWANIA

import javax.swing.*; public class SwingTest { public static void main(string [] args) { // utworz nowe okno JFrame frame=new JFrame(); // ustalenie akcji po zamknieciu okna frame.setdefaultcloseoperation(jframe.exit_on_close); // ustaw wielkosc okna frame.setsize(400, 300); // setsize(int x, int y); // ustaw okno jako widoczne frame.setvisible(true); // main() konczy się, ale watek Swing kontynuuje prace Zanim będzie można skorzystać z usług klasy Graphics, należy zdefiniować obszar, na którym będziemy rysowali. Najbardziej odpowiednim do tego celu składnikiem jest JPanel zawarty w pakiecie javax.swing. Klasa JPanel reprezentuje panel graficznego interfejsu użytkownika. Może on być pusty, jak również może zawierać inne składniki. PRZYKŁAD 2 DO ZREALIZOWANIA Poniższy fragment kodu tworzy ramkę i panel, a następnie dodaje panel do okna ramki: JFrame main = new JFrame("Main Menu"); JPanel pane = new JPanel(); main.getcontentpane().add(pane); Metoda getcontentpane() wywoływana na rzecz ramki zwraca obiekt reprezentujący tą część ramki, która może zawierać inne składniki. Wywołanie należącej do tego obiektu metody add() dodaje panel do ramki.

Celem uruchomienia apletu za pomocą apletviewer, który będzie ilustrował użycie metod getcontentpane() oraz add() należy dodać stosowny znacznik w komentarzu kodu w języku Java. PRZYKŁAD 3 DO ZREALIZOWANIA Shift+F6 // <applet code=applet1 width=400 height=400></applet> import javax.swing.*; public class Applet1 extends JApplet { public void init() { getcontentpane().add(new JLabel("Applet!")); PRZYKŁAD 4 DO ZREALIZOWANIA Przykład aplikacji demonstrującej użycie metod getcontentpane() araz add(): import javax.swing.*; import java.awt.*; public class Przycisk extends JFrame { public Przycisk() { JButton p = new JButton("Nacisnij"); Container kont = getcontentpane(); kont.add(p); public static void main(string args[]) { Przycisk b = new Przycisk(); b.setvisible(true); b.setsize(100, 200);

Podobnie jak wiele innych składników interfejsów użytkownika dostępnych w języku Java, obiekt klasy JPanel posiada metodę paintcomponent(graphics), która jest automatycznie wywoływana za każdym razem, kiedy składnik powinien zostać przerysowany. Jej przeznaczenie jest identyczne jak w przypadku metody paint(graphics) dostępnej we wszystkich apletach. Poprzez utworzenie podklasy klasy JPanel należy przysłonić metodę paintcomponent() i w jej nowej wersji umieścić wszystkie potrzebne operacje graficzne. PRZYKŁAD 5 DO ZREALIZOWANIA Klasa 1 // MessagePanel: Wyswietla informacje w JPanel import javax.swing.*; import java.awt.*; class MessagePanel extends JPanel { public void paintcomponent(graphics g) { super.paintcomponent(g); g.drawstring("tresc Komunikatu!", 40, 100); Klasa2 public class MessagePanelDemo { JFrame frame = new JFrame("Tytul"); MessagePanel panel = new MessagePanel(); void demo() { frame.getcontentpane().add(panel); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setsize(400, 200); frame.setvisible(true); public static void main(string[] args) { new MessagePanelDemo().demo();

2.2 RZUTOWANIE OBIEKTU GRAPHICS2D Operacje graficzne są wywoływane na rzecz obiektu Graphics bądź Graphics2D. Decyzja, którego obiektu należy użyć, zależy od tego, czy będziemy korzystać z nowych możliwości graficznych wprowadzonych w języku Java 2. Wszystkie operacje graficzne typu Java2D muszą być wywoływane na rzecz obiektu Graphics2D. Obiekt Graphics2D jest częścią pakietu java.awt. Obiekt Graphics (lub Graphics2D) reprezentuje obszar, na którym będziemy rysować. Może to być np. okno apletu lub okno ramki. W przypadku operacji Java2D taki obiekt musi zostać wykorzystany do utworzenia nowego obiektu Graphics2D, tak jak to zaprezentowano w poniższej definicji metody paintcomponent(). public void paintcomponent(graphics comp) { Graphics2D comp2d = (Graphics2D) comp; W powyższym przykładzie, obiekt comp2d został utworzony przez rzutowanie. Na listingu 1 przedstawiono kod źródłowy aplikacji, która za pomocą metody drawstring() wyświetla na panelu słowo "Florida". PRZYKŁAD 6 DO ZREALIZOWANIA. LISTING 1 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Map extends JFrame { public Map() { super("map"); setsize(350, 350); ExitWindow exit = new ExitWindow(); MapPane map = new MapPane(); getcontentpane().add(map); addwindowlistener(exit);

public static void main(string[] arguments) { Map frame = new Map(); frame.show(); class MapPane extends JPanel { public void paintcomponent(graphics comp) { Graphics2D comp2d = (Graphics2D)comp; comp2d.drawstring("florida", 185, 75); class ExitWindow extends WindowAdapter { public void windowclosing(windowevent e) { System.exit(0); Powyższa aplikacja używa metody drawstring() wywoływanej na rzecz obiektu comp2d do narysowania na ekranie napisu "Florida" w miejscu o współrzędnych (185, 75). Rysunek 1. Rysowanie tekstu w oknie aplikacji

Wszystkie podstawowe polecenia, których będziemy używali do rysowania, są metodami obiektu Graphics, wywoływanymi z wnętrza metody paintcomponent() danego składnika. Jest to idealne miejsce dla wszelkich operacji graficznych, ponieważ, metoda paintcomponent() jest automatycznie wywoływana za każdym razem, kiedy składnik musi zostać przerysowany. Przykładowo, jeżeli okno innego programu przysłoni dany składnik, to umieszczenie wszystkich operacji graficznych we wnętrzu metody paintcomponent() zapewnia, że żaden fragment składnika nie zostanie pomi-nięty podczas przerysowywania. 2.4 UKŁAD WSPÓŁRZĘDNYCH DLA OPERACJI GRAFICZNYCH Podobnie jak to miało miejsce w przypadku metody drawstring(), wszystkie inne metody posiadają parametry określające współrzędne x, y. Niektóre z nich pobierają więcej niż jeden zestaw współrzędnych, tak jak w przypadku linii, która posiada jeden zestaw współrzędnych x, y określających początek linii oraz drugi, określający współrzędne końca linii. Układ współrzędnych stosowany w języku Java używa pikseli jako jednostek miary. Początek układu współrzędnych (punkt 0,0) jest zlokalizowany w lewym górnym narożniku okna apletu. Wartości współrzędnej x rosną na prawo od punktu 0, 0, a wartości współrzędnej y rosną w dół od tego punktu. Ilość pikseli jest zawsze podawana jako liczba całkowita. Rysunek 2 przedstawia układ współrzędnych stosowany w języku Java, z początkiem układu zlokalizowanym w punkcie 0, 0. Dwa narożniki zaznaczonego na rysunku kwadratu mają współrzędne odpowiednio (20, 20) oraz (60, 60). Rysunek 2. Układ współrzędnych stosowany w języku Java