Java 07 Watki GUI

background image

Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

w ramach projektu

Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych

i propagowaniu wiedzy technicznej w regionie

Java Podstawy

Michał Bereta

www.michalbereta.pl

mbereta@pk.edu.pl

background image

Wątki

Dwa sposoby implementacji wątków:

1. Klasa dziedzicząca z klasy Thread
2. Klasa implementująca interfejs Runnable

background image

Wątki

background image

Wątki

konstruktor

metoda uruchamiana
po wywołaniu start()

background image

Wątki

metoda start() wywoła metodę run()

background image

Wątki

długotrwałe obliczenia

background image

Wątki

W środku tej klasy nie jesteśmy wątku -> metoda getId() nie
jest bezpośrednio dostępna!

background image

Wątki

obiekt typu Runnable jest przekazywany jako
parametr do konstruktora obiektu Thread

background image

Wątki

Dodamy definicję nowego obiektu Runnable
jako klasę anonimową (nie ma swojej własnej
nazwy)

background image

Wątki

brak implementacji wymaganej metody run()

background image

Wątki

background image

Wątki

Zadanie

Zaimplementuj dwie niezależne symulacje losowania totolotka, każda powinna byd
uruchomiona w osobnym wątku.

Podpowiedź: zapytaj użytkownika o jego liczby w głównym wątku, natomiast
wielokrotne losowanie powinno odbywad się w osobnych wątkach, przykładowo:
osobny wątek dla losowao w środy, osobny dla losowao w soboty. Każdy wątek
informuje, jeśli liczby użytkownika zostały wylosowane i kooczy swoje działanie.

background image

Proste okna dialogowe

background image

Proste okna dialogowe

background image

Proste okna dialogowe

background image

Proste okna dialogowe

background image

Proste okna dialogowe

Zadanie

Zmodyfikuj swój projekt z symulacją totolotka tak, by dialog odbywał się z
wykorzystaniem okien dialogowych.

background image

Proste GUI

background image

Proste GUI

background image

Proste GUI

background image

Proste GUI

background image

Proste GUI

Przeciągnij wybrane "kontrolki" z palety...

background image

Proste GUI

1

2

3

background image

Proste GUI

...modyfikuj właściwości kontrolek w oknie
właściwości (Properties)...

background image

Proste GUI

background image

Proste GUI

... dodaj obsługę zdarzeo ...

... przełączaj się pomiędzy kodem źródłowym a
projektowaniem wizualnym okna ...

background image

Proste GUI

wypełnij swoim kodem.

background image

Proste GUI

Uruchom!

background image

Proste GUI

Po kliknięciu...

background image

Proste GUI

Proste wiązanie (ang. binding)

dodaj

background image

Proste GUI

Proste wiązanie (ang. binding)

po kliknięciu prawym przyciskiem myszki na
pole tekstowe wybierz "bind“ -> text

background image

Proste GUI

Proste wiązanie (ang. binding)

Wiązanie dwustronne - modyfikacja źródła
zmienia wartośd celu i wzajemnie.

background image

Proste GUI

Proste wiązanie (ang. binding)

wartośd z suwaka

background image

Proste GUI


Zadania

1. Zaimplementuj prosty kalkulator z działaniami +, -, * oraz /.

2. Zmodyfikuj swój projekt z symulacją totolotka tak, by dialog odbywał się z

wykorzystaniem prostego interfejsu graficznego.

background image

Proste GUI

Liczby pierwsze

Przykład

Długie obliczenia w tle - generowanie kolejnych liczb pierwszych

DlugaPracaWTle.zip – implementacja bez wątków

DlugaPracaWTle2.zip – implementacja z wątkami

background image

Proste GUI

Liczby pierwsze

JTextArea

background image

Proste GUI

Liczby pierwsze

długie obliczenia w pętli

background image

Proste GUI

Liczby pierwsze

start

stop

background image

Proste GUI

Liczby pierwsze

Efektem będzie charakterystyczne zacinanie się(zawieszanie)
aplikacji na czas wykonywania obliczeo.

Powód: obliczenia wykonywane są w tym samym (głównym)
wątku co obsługa zdarzeo komponentów wizualnych naszej
aplikacji.

brak uaktualnienia obszaru tekstowego


brak reakcji

background image

Proste GUI

Liczby pierwsze

Wersja z osobnym wątkiem mającym za zadanie przeprowadzenie obliczeo.

Wątek główny jest wolny i może zając się odświeżaniem interfejsu.

background image

Proste GUI

Liczby pierwsze

nowy wątek definiowany
przez klasę anonimową

background image

Proste GUI

Liczby pierwsze

Efekt: pole tekstowe aktualizowane jest w sposób widoczny, na bieżąco.

background image

Proste GUI

Aktualizacja kontrolek przez wątki

background image

Proste GUI

Aktualizacja kontrolek przez wątki

background image

Proste GUI

Aktualizacja kontrolek przez wątki

po wyborze wartości z comboboxa jest ona
kopiowana do pola tekstowego.

background image

Proste GUI

Aktualizacja kontrolek przez wątki

Każdy wątek w nieskooczonej pętli usuwa losowo element z comboboxa a następnie
dodaje nowy, losowy.

background image

Proste GUI

Aktualizacja kontrolek przez wątki

background image

Proste GUI

Aktualizacja kontrolek przez wątki

Wątek jako klasa anonimowa ma dostęp do
wszystkich pól i metod klasy, w której jest
zawarty.

background image

Proste GUI

Aktualizacja kontrolek przez wątki

Uruchomienie generuje mnóstwo wyjątków -
inne wątki nie powinny modyfikowad
komponentów Swinga.

background image

Proste GUI

Aktualizacja kontrolek przez wątki

Użycie "synchronized" nie rozwiązuje problemu.

background image

Proste GUI

Aktualizacja kontrolek przez wątki

Rozwiązanie - dodanie aktualizacji kontrolek do kolejki zdarzeo.

background image

GUI z JavaBeans

Nowy projekt

Okno główne

background image

GUI z JavaBeans

Nowa klasa

background image

GUI z JavaBeans

Nasza klasa dziedziczy z klasy JPanel - może byd
komponentem wizualnym, który dodamy do
palety.

background image

GUI z JavaBeans

Insert code -> Override methods -> JComponent

background image

GUI z JavaBeans

Nadpisanie metody paint() pozwala na ręczne "rysowanie" komponentu.

background image

GUI z JavaBeans

Dodanie komponentu MojPanel do palety.

background image

GUI z JavaBeans

background image

GUI z JavaBeans

background image

GUI z JavaBeans

W efekcie MojPanel jest dostępny do wyboru
w palecie.

background image

GUI z JavaBeans

Przeciągnij i upuśd

background image

GUI z JavaBeans

Dla MojPanel dostępne są właściwości
odziedziczone z JPanel, np. background.

background image

GUI z JavaBeans

background image

GUI z JavaBeans

Możemy definiowad dodatkowe właściwości, np. promieo.

Insert code -> add property :

background image

GUI z JavaBeans

Stosowanie konwencji
"getterów" i "setterów"
pozwala na definiowanie
właściwości, do których
można mied dostęp podczas
wizualnego projektowania
okna.

background image

GUI z JavaBeans

background image

GUI z JavaBeans

background image

GUI z JavaBeans

background image

GUI z JavaBeans

background image

GUI z JavaBeans

background image

GUI z JavaBeans

Możemy modyfikowad wartośd
naszej właściwości promieo w
zakładce "Properties" !

background image

GUI z JavaBeans

Możemy również powiązad wartośd promienia z wartością suwaka !

background image

GUI z JavaBeans

Po każdej zmianie wartości suwaka, chcemy
wywoład metodę repaint() naszego panelu.

background image

GUI z JavaBeans

Wypróbuj!

background image

GUI z JavaBeans

Aby inne komponenty mogły byd dowiązane do
promienia potrzebne są pewne zmiany.

JLabel

background image

GUI z JavaBeans

background image

GUI z JavaBeans

Modyfikacja "settera"

background image

GUI z JavaBeans

Zadanie:

Dodaj możliwośd modyfikowania położenia koła.

background image

GUI z JavaBeans

Przykład:

Przeanalizuj projekt Kulki.zip

Zadanie:

Dodaj możliwośd zmiany promienia za pomocą suwaka.

background image

Projekt

Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu

przedmiotów ścisłych i propagowaniu wiedzy technicznej w regionie

współfinansowany przez Unię Europejską ze środków

Europejskiego Funduszu Społecznego

Instytut Fizyki Politechniki Krakowskiej

pok. F206a, ul. Podchorążych 1, 30-084 Kraków

tel.: +48 12 6370666 w. 28, faks: +48 12 6371446

e-mail:

wiedza@pk.edu.pl

www.wiedza.pk.edu.pl


Wyszukiwarka

Podobne podstrony:
notatki java 07
JAVA 07 instrukcje warunkowe
notatki java 07
java 07
Java watki
07 Java klasy abstrakcyjne, interfejsy, polimorfizm 0
Java praca domowa 07
07 Figury wirtualne Java
Wykład 9 wątki java
EŚT 07 Użytkowanie środków transportu
07 Windows
07 MOTYWACJAid 6731 ppt

więcej podobnych podstron