22.08.2013 Views

Wykład_5

Wykład_5

Wykład_5

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Pawe Paweł Pawe Gmys<br />

Naszym mózgom. Za to, że<br />

zawsze są na swoim miejscu.<br />

W mniejszym lub większym<br />

stopniu<br />

APLIKACJE – OKNA i MENU<br />

1


Pawe Paweł Pawe Gmys<br />

Aplikacje<br />

klasa awt oraz swing<br />

Aplikacje graficzne wymagają interfejsu<br />

klasy WindowsListener oraz<br />

zdefiniowanych w niej metod.<br />

2


Pawe Paweł Pawe Gmys<br />

Klasa WindowsListener<br />

windowClosing – wywoływane gdy okno jest zamykane<br />

windowClosed – wykonywane po zamknięciu okna<br />

windowOpened – wykonywane po otwarciu okna<br />

windowIconified – wykonywane po minimalizacji okna<br />

windowDeiconified – wykonywane po maksymalizacji<br />

okna<br />

windowActivated – wykonywane po aktywacji okna<br />

windowDeactivated – wykonywane gdy okno staje się<br />

nieaktywne<br />

3


Pawe Paweł Pawe Gmys<br />

Ramki są przykładami pojemników graficznych.<br />

Stosowane będą metody klasy JFrame pakietu javax.swing<br />

Domyślny rozmiar ramki to 0 x0 pikseli. Aby ramka powstała<br />

należy zdefiniować podklasę i określić wielkość ramki<br />

4


Pawe Paweł Pawe Gmys<br />

Zamykanie ramki (okna)<br />

zmienna.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)<br />

Polecenie dostępne od wersji 1.3<br />

Tworzenie ramki nie powoduje jej wyświetlenia.<br />

Należy wywołać metodę show w metodzie main.<br />

przykład okienko0<br />

jdkcom\JDKcommander.exe<br />

5


Pawe Paweł Pawe Gmys<br />

Wywołanie kilku okien<br />

Dla każdego nowego okna tworzymy nową<br />

wartość korzystając z utworzonego już<br />

obiektu.<br />

przykład okienko01<br />

jdkcom\JDKcommander.exe<br />

6


Pawe Paweł Pawe Gmys<br />

Wyświetlanie informacji w panelu<br />

Do okna zbudowanego w poprzednich przykładach możemy<br />

dołożyć informacje, przyciski i inne elementy za pomocą Paneli<br />

Są to elementy interfejsu, o dwóch właściwościach:<br />

1. posiadają powierzchnię do rysowania<br />

2. same w sobie są pojemnikami<br />

Panele implementujemy przez klasę JPanel<br />

7


Pawe Paweł Pawe Gmys<br />

Aby narysować Panel należy:<br />

Panele<br />

1. Zdefiniować klasę rozszerzającą JPanel<br />

2. przeładować metodę paintComponent należącą do tej<br />

klasy<br />

Metoda paintComponent znajduje się w JComponent – klasie<br />

bazowej. Pobiera jeden paraetr typu Graphics. Klasa ta<br />

posiada metody wyświetające tłą, rysunki i tekst<br />

8


Pawe Paweł Pawe Gmys<br />

Panel – struktura kodu<br />

class MojPanel extends JPanel<br />

{<br />

}<br />

public void paintComponent(Graphics g)<br />

{<br />

}<br />

super.paintComponent(g)<br />

//instrukcje rysujące<br />

9


Pawe Paweł Pawe Gmys<br />

Rysowanie tekstu (renderowanie)<br />

Klasa Graphics<br />

metoda g.drawString (tekst, x, y)<br />

przykład<br />

g.drawString(”lala”, 100, 100);<br />

10


Pawe Paweł Pawe Gmys<br />

javax.swing.JFrame<br />

Container getContentPane()<br />

Zwraca powierzchnię zawartości dla<br />

danego obiektu<br />

11


Pawe Paweł Pawe Gmys<br />

void repaint()<br />

java.awt.Component<br />

Powoduje odmalowanie komponentu „tak<br />

szybko jak to możliwe”<br />

public void repaint(int x, int y, int szerokosc, int wysokosc)<br />

Powoduje odmalowanie części komponentu „tak szybko<br />

jak to możliwe”<br />

12


Pawe Paweł Pawe Gmys<br />

javax.swing.JComponent<br />

void paintComponent(Graphics g)<br />

Przeładuj tę metodę, aby opisać, w jai<br />

sposób Twoje komponenty powinny być<br />

rysowane<br />

13


Pawe Paweł Pawe Gmys<br />

Aplikacja z tytułem – przykład okienko1<br />

jdkcom\JDKcommander.exe<br />

14


Pawe Paweł Pawe Gmys<br />

Figury 2D<br />

Klasa Graphics2D (podklasa Graphics)<br />

public void paintComponent(Graphics g)<br />

{<br />

}<br />

Graphics2D g2 = (Graphics2D)g<br />

………………………………….<br />

przykład: figury.java<br />

jdkcom\JDKcommander.exe<br />

15


Pawe Paweł Pawe Gmys<br />

g2.draw(co rysujemy);<br />

przykład figury1.java<br />

Figury c.d.<br />

figury2.java<br />

figury3.java<br />

jdkcom\JDKcommander.exe<br />

16


Pawe Paweł Pawe Gmys<br />

Kolory<br />

Metoda setPaint klasy Graphics2D<br />

Definicja koloru za pomocą klasy Color<br />

17


Pawe Paweł Pawe Gmys<br />

Lista kolorów w klasie java.awt.Color<br />

Black , Blue<br />

Cyan , darkGray , gray , green<br />

light green , magenta , orange<br />

pink, red , white , yellow<br />

18


Pawe Paweł Pawe Gmys<br />

Kolory - własne definicje<br />

Można definiować kolor, tworząc obiekt<br />

typu Color i określając jego czerwony,<br />

zielony i niebieski kolor składowy.<br />

Skala od 0 do 255.<br />

example:<br />

g.setColor(new Color(0, 128, 128));<br />

g.drawString(”Witam”, 75, 100);<br />

19


Pawe Paweł Pawe Gmys<br />

Kolorowe figury<br />

przykład figury4.java<br />

kilka kolorów<br />

przykład figury5.java<br />

20


Pawe Paweł Pawe Gmys<br />

Kolor tła<br />

Metoda setBackground klasy Component<br />

przykład tlo.java<br />

jdkcom\JDKcommander.exe<br />

21


Pawe Paweł Pawe Gmys<br />

Panel z przyciskami<br />

Przyciski tworzymy określając na nich napis,<br />

ikonę albo jedno i drugie.<br />

Dodawanie przycisków do panelu następuje w<br />

wyniku wywołania metody add.<br />

Parametrem tej metody jest komponent<br />

22


Pawe Paweł Pawe Gmys<br />

Panel - składnia<br />

class Panelprzyciskow extends JPanel<br />

{<br />

public PanelPrzyciskow<br />

{<br />

JButton p1 = new JButton(”opcja1”);<br />

………………………………………<br />

}<br />

add(p1);<br />

………<br />

}<br />

23


Pawe Paweł Pawe Gmys<br />

Przyciski - przykłady<br />

przyciski1.java<br />

jdkcom\JDKcommander.exe<br />

24


Pawe Paweł Pawe Gmys<br />

Przykład testprzyciskow<br />

jdkcom\JDKcommander.exe<br />

25


Pawe Paweł Pawe Gmys<br />

Zadanie<br />

1. Narysuj w oknie dom, n który składają<br />

się figury geometryczne. Rysunek<br />

powinien być podpisany przez autora<br />

(imię i nazwisko) i znajdować się na<br />

zielonym tle. Aplikacja powinna<br />

zawierać w belce tytułowej jej nazwę<br />

26

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!