Tworzenie elementów graficznych

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

Kontenery i komponenty graficzne

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

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

Podstawy Swing. Tomasz Borzyszkowski

Programowanie obiektowe

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

Programowanie zdarzeniowe

Podstawy Języka Java

Programowanie graficznych interfejsów użytkownika

Java - interfejs graficzny

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

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

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

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

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

Graphic User Interfaces pakiet Swing

Programowanie zdarzeniowe

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

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

Dokumentacja do API Javy.

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

Aplikacja wielowątkowa prosty komunikator

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

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

Scenariusz Lekcji. Część organizacyjna:

Aplikacja wielow tkowa prosty komunikator

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

SWING. dr Jarosław Skaruz

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

Programowanie obiektowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe

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

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

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

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

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

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

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

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

Visual Studio instalacja

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

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

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

Kurs programowania 2 - listy

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

SWING ZAGADNIENIA: wprowadzenie, kontenery I komponenty, LayoutManager, komponenty tekstowe.

Tworzenie i obsługa graficznego interfejsu uŝytkownika

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

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

Builder (budowniczy) Cel: Przykład:

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

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

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

PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH

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

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

Programowanie Obiektowe GUI

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

Połączenia między bazami danych i programem w języku Java część 2

Programowanie w języku Java

Programowanie Multimediów. Programowanie Multimediów JAVA. programowanie GUI. (AWT i Swing) [1]

Dodanie nowej formy do projektu polega na:

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

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

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

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

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Aplikacje w Javie wykład 12 Programowanie GUI

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

Java biblioteka Swing

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

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

Programowanie obiektowe

Architektura interfejsu użytkownika

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

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

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

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

Comparable<Klasa_uzytkownika>

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Multimedia JAVA. Historia

Podstawowe informacje o apletach

Java jako język programowania

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

Java: interfejsy i klasy wewnętrzne

Iteracyjno-rozwojowy cykl oprogramowania 4

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

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

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Aplikacje w środowisku Java

Delphi podstawy programowania. Środowisko Delphi

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

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

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

Programowanie w środowisku graficznym- wykład 9 Programowanie GUI cz1

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

Transkrypt:

Tworzenie elementów graficznych Elementy graficzne w Javie pozwalające tworzyć Graficzny Interfejs Użytkownika (GUI) możemy podzielić na dwie grupy: AWT (Abstract Window Toolkit) bibliotek klas służąca do prostego programowania interfejsu użytkownika SWING część zestawu narzędzi JFC (Java Fundation Class) służące do tworzenia graficznego interfejsu użytkownika

SWING zasada działania Elementy interfejsu użytkownika tworzone są na powierzchni pustych okien (tzw. ramek - frame). Tworzenie polega na rysowaniu przez klasy SWING'a poszczególnych elementów interfejsu. Rozwiązanie takie chociaż wolniejsze od AWT posiada bogatszy zestaw elementów interfejsu oraz charakteryzuje się znacznie mniejszą zależnością od platformy.

Podstawą są ramki klasa JFrame Podstawowym elementem tworzącym interfejs użytkownika jest ramka. Ramkę tworzymy przez stworzenie obiektu klasy JFrame (SWING) lub Frame (AWT). W dalszej części ćwiczeń będziemy korzystać ze SWING'a. Object Component Container JComponent JPanel Window Frame JFrame

Tworzenie prostej ramki class MojaRamka extends JFrame{ public MojaRamka() { setsize(300,200); public static void main(string[] args){ MojaRamka ramka = new MojaRamka(); ramka.setdefaultcloseoperation(jframe.exit_on_close); ramka.setvisible(true);

Manipulowanie ramką 1 Wybrane metody dziedziczone po Frame: SetIconImage) - pobiera objekt typu Image i uzywa go jako ikonkę ramki. settitle zmienia tekst na pasku tytułowym okna. Argumentem jest String. setresizeable określa czy użytkownik może zmienić rozmiar okna. Pobiera wartość boolean

Manipulowanie ramką 2 Wybrane metody dziedziczone po Component : setlocation(x, y) określa położenie lewego górnego rogu okna, setsize(szer, wys) określa rozmiar okna, setbounds(x, y, szer, wys) określa obydwa powyższe parametry na raz.

Wybrane metody klasy Component Uwaga: poniższe metody dotyczą wszystkich klas dziedziczących po klasie Component. getlocation zwraca położenie lewego górnego narożnika danego komponentu, względem otaczajacego go pojemnika. getlocationonscreen jw. Tylko względem ekranu, getsize pobiera aktualny rozmiar komponentu, setvisible określa czy dany element (w tym ramka) jest widoczny. setenable włącza/wyłącza komponent isshowing zwraca wartość boolean mówiącą o tym czy dany element jest widoczny na ekranie iseabling zwraca czy dany element jest aktywny.

Wybrane metody klasy Window (java.awt.window) tofront przesuwa okno na pierwszy plan, toback przesuwa okno na ostatni plan.

Klasa Toolkit określanie rozmiaru ekranu (java.awt.toolkit) Korzystamy z zestawu narzędzi dostępnych w kalsie Toolkit, jedną z metod dostępych w zestawie narzędzi jest getscreensize. Metoda ta zwraca obiekt klasy dimension, który przechowuje rozmiary ekranu w zmiennych width i height. T o o lk it to o l = T o o lk it.g e td e fa u ltt o o lk it(); D im e n s io n s c re e n D im e n s io n = to o l.g e ts c re e n S iz e (); s e ts iz e (s c re e n D im e n s io n.w id th /2, s c re e n D im e n s io n.h e ig h t/2 ); s e tl o c a tio n (s c re e n D im e n s io n.w id th /4, s c re e n D im e n s io n.h e ig h t/4 );

JFrame struktura wewnętrzna JFrame Obiekty klasy JFrame mają dosyć złożoną strukturę. Możemy w prawdzie rysować w objecie ramki, ale nie jest to praktyka zalecana, w rzeczywistości ramki są pojemnikami na inne komponenty. JRoot JLayeredPane Pow. zawartości Tytuł okna Powierzchnia szklana

Klasa JPanel Elementem którym będziemy się zajmować obecnie będzie powierzchnia zawartości. Będziemy dodawać do niej pojedynczy panel na którym będziemy mogli rysować, pisać i dodawać inne elementy. Panele są obiektami klasy JPanel.

Dodawanie komponentu do pow. zawartości. Aby dodać komponent do powierzchni zawartości używamy następującego kodu: Container pojemnik = getcontentpane(); Component k =...(tutaj określamy komponent); pojemnik.add(k); *) Komponentem może być Panel (JPanel), Przycisk(JButton), itp.

import java.awt.*; import javax.swing.*; Przykład tworzenia i dodawania panelu public class dodajemypanel { public static void main(string[] args) { RamkaZPanelem ramka = new RamkaZPanelem(); ramka.setdefaultcloseoperation(jframe.exit_on_close); ramka.setvisible(true); class RamkaZPanelem extends JFrame { public RamkaZPanelem(){ settitle("ramka z Panelem"); setsize(toolkit.getdefaulttoolkit().getscreensize().width,toolkit.getdefaulttoolkit().getscreensize().height); PanelZTekstem panel = new PanelZTekstem(); Container pojemnik = getcontentpane(); pojemnik.add(panel); class PanelZTekstem extends JPanel { public void paintcomponent(graphics g) { super.paintcomponent(g); g.drawstring("to jest nasz pierwszy tekst w panelu", 100,100);

Zmiana kroju pisma, wielkości znaków oraz koloru wyświetlanego tekstu. Zmiana domyslnego kroju czcionki realizowana jest przez metodę setfont(font); metoda ta przyjmuje jako argumenty obiekty klasy Font (java.awt.font)... Font czcionka = new Font("Havletica",Font.BOLD Font.ITALIC,25); setfont(czcionka);... Zmianę koloru wyświetlanego tekstu uzyskujemy za pomocą metody: setcolor(color). Argumenty to obiekty klasy Color (java.awt.color);

Kod przykładu w całości import java.awt.*; import javax.swing.*; public class RamkaPanelTekst { public RamkaPanelTekst() { public static void main(string[] args) { MojaRamka ramka = new MojaRamka(); ramka.setdefaultcloseoperation(jframe.exit_on_close); ramka.setvisible(true); ramka.settitle("moja ramka z tekstem"); class MojaRamka extends JFrame { public MojaRamka(){ Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize(); setsize(screensize.width/2,screensize.height/2); setlocation(screensize.width/4,screensize.height/4); MojPanel panel = new MojPanel(); Container pojemnik = getcontentpane(); pojemnik.add(panel); class MojPanel extends JPanel { public void paintcomponent(graphics g){ super.paintcomponent(g); Font czcionka = new Font("Havletica",Font.BOLD Font.ITALIC,25); g.setfont(czcionka); g.setcolor(color.red); g.drawstring("ala ma kota", getwidth()/2,getheight()/2);

Obsługa zdarzeń Obsługę zdarzeń w Java realizujemy za pomocą tzw. Obiektów słuchaczy. Słuchacz jest instancją klasy, która interpretuje specjalny interfejs nazywany interfejsem słuchacza Obiekty będące źródłem zdarzeń (np. Przyciski) potrafią rejestrować obiekty słuchaczy i wysyłać im obiekty reprezentujące zdarzenia Źródła zdarzeń są tak skonstruowane, że wysyłają obiekty zdarzeń do wszystkich zarejestrowanych słuchaczy Obiekty słuchaczy wykorzystują informacje zawarte w zdarzeniach do określenia reakcji na dane zdarzenie

Obsługa zdarzeń przyciski etap 1 Tworzymy szkielet programu - definiujemy klasę ramki import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Przyciski { public Przyciski() { public static void main(string[] args) { RamkaNaPrzyciski ramka = new RamkaNaPrzyciski(300,150); ramka.setdefaultcloseoperation(jframe.exit_on_close); ramka.setvisible(true); class RamkaNaPrzyciski extends JFrame { RamkaNaPrzyciski(int szer, int wys){ settitle("obsługa zdarzeń - przyciski"); setsize(szer,wys);

Obsługa zdarzeń przyciski etap 2 Tworzymy własną klasę PanelZPrzyciskami i umieszczmy w nim przyciski class PanelZPrzyciskami extends JPanel { PanelZPrzyciskami(){ JButton PrzyciskZielony = new JButton("Zielono mi!!!"); JButton PrzyciskCzerwony = new JButton("Czerwono mi!!!"); add(przyciskzielony); add(przyciskczerwony); Dodajemy do klasy RamkaNaPrzyciski objekt klasy PanelZPrzyciskami... // dodajemy panel do powierzchni zawartości Container pojemnik = getcontentpane(); PanelZPrzyciskami panel = new PanelZPrzyciskami(); pojemnik.add(panel);...

// tworzymy objekty "słuchaczy" dla przycisków w klasie SluchaczPrzycisku SluchaczZielonego = new SluchaczPrzycisku(Color.GREEN); SluchaczPrzycisku SluchaczCzerwonego = new SluchaczPrzycisku(Color.RED); //Przypisujemy je do przycisków PrzyciskZielony.addActionListener(SluchaczZielonego); PrzyciskCzerwony.addActionListener(SluchaczCzerwonego); Obsługa zdarzeń przyciski etap 3 Tworzymy klasę wewnętrzna klasy JPanel implementującą klasę ActionListener class SluchaczPrzycisku implements ActionListener { SluchaczPrzycisku(Color c){ KolorTla = c; public void actionperformed(actionevent zdarzenie) { setbackground(kolortla); Color KolorTla; Tworzymy obiekty słuchaczy dla przycisków i integrujemy je z przyciakami w klasie reprezentującej panel z przyciskami

Całość kodu import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Przyciski { public Przyciski() { public static void main(string[] args) { RamkaNaPrzyciski ramka = new RamkaNaPrzyciski(300,150); ramka.setdefaultcloseoperation(jframe.exit_on_close); ramka.setvisible(true); class RamkaNaPrzyciski extends JFrame { RamkaNaPrzyciski(int szer, int wys){ settitle("obsługa zdarzeń - przyciski"); setsize(szer,wys); // dodajemy panel do powierzchni zawartości Container pojemnik = getcontentpane(); PanelZPrzyciskami panel = new PanelZPrzyciskami(); pojemnik.add(panel); class PanelZPrzyciskami extends JPanel { PanelZPrzyciskami(){ JButton PrzyciskZielony = new JButton("Zielono mi!!!"); JButton PrzyciskCzerwony = new JButton("Czerwono mi!!!"); add(przyciskzielony); add(przyciskczerwony); // tworzymy objekty "słuchaczy" dla przycisków SluchaczPrzycisku SluchaczZielonego = new SluchaczPrzycisku(Color.GREEN); SluchaczPrzycisku SluchaczCzerwonego = new SluchaczPrzycisku(Color.RED); //Przypisujemy je do przycisków PrzyciskZielony.addActionListener(SluchaczZielonego); PrzyciskCzerwony.addActionListener(SluchaczCzerwonego); class SluchaczPrzycisku implements ActionListener { SluchaczPrzycisku(Color c){ KolorTla = c; public void actionperformed(actionevent zdarzenie) { setbackground(kolortla); Color KolorTla;

Modyfikacja 1.) Proszę dodać do poprzedniego projektu dodatkowy przycisk zmieniający tło na niebieskie. 2.) Wykorzystując metodę System.exit(0) dodać przycisk Wyjście zamykający okienko. (należy utworzyć dodatkową klasę słuchacza do obsługi tego zdarzenia).