Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
JBuilder X. Efektywne
programowanie w Javie
Autor: Jacek Matulewski
ISBN: 83-7361-293-9
Format: B5, stron: 384
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Jeli wierzy prognozom firmy Borland producenta JBuildera pod koniec obecnego
dziesiciolecia prawie 80% aplikacji bdzie tworzonych w Javie i bazujcych na niej
rodowiskach. Rozmaite dziedziny ludzkiej dziaalnoci stawiaj przed informatyk
coraz to wiksze wymagania. Coraz cenniejszym zasobem staje si inwencja
i produktywno projektantw-programistw, ktrym trzeba w jak najwikszym stopniu
umoliwi twrcze dziaanie. Warto ich odciy od drugorzdnych zada, ktre
z powodzeniem mona powierzy coraz lepszym i coraz taszym maszynom.
Obecnie, w dobie upowszechnienia si komputerw osobistych, trudno wyobrazi
sobie profesjonalne tworzenie aplikacji bez usprawniajcych to przedsiwzicie
nowoczesnych narzdzi (RAD), z JBuilderem na czele. Warto pamita, e firma
Borland jest producentem dwch innych narzdzi RAD, ktre zrewolucjonizoway
proces tworzenia aplikacji: Delphi i C++Buildera - kolejne wersje tych produktw
obecne s na rynku od niemal dziesiciu lat.
Niniejsza ksika stanowi praktyczny podrcznik zarwno dla pocztkujcych,
ktrzy na gruncie JBuildera zamierzaj zdobywa swe pierwsze dowiadczenia
programistyczne, jak i tych, ktrzy w swojej pracy uywaj Delphi i C++Buildera,
a w JBuilderze szukaj interesujcej alternatywy.
W ksice omwiono midzy innymi:
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Wstp ............................................................................................... 9
Rozdzia 1. Pierwsze spotkanie z JBuilderem ...................................................... 11
Trivia .................................................................................................................................11
Co to jest JBuilder?.....................................................................................................11
Nie tylko JBuilder .......................................................................................................12
Co nowego w darmowej edycji JBuilder X Foundation? ...........................................13
Zintegrowane rodowisko programistyczne......................................................................14
Przewodnik po oknach i zakadkach IDE ...................................................................14
Jak bezbolenie przesi si z Delphi lub C++ Buildera do JBuildera? ...................17
Pomoc .........................................................................................................................18
Konfigurowanie edytora i innych elementw rodowiska programisty .....................19
Tworzenie i zarzdzanie projektem...................................................................................25
Ustawienia formatowania kodu rdowego ..............................................................29
JBuilder w subie programisty, czyli przez Jav na skrty .............................................30
Kreator apletu. Pierwszy aplet Hello World! ..........................................................30
Aby obejrze aplet w zewntrznej przegldarce.....................................................37
Analiza kodu pierwszego apletu .................................................................................40
Osadzanie apletu w dokumencie HTML ....................................................................43
Kontrola dziaania apletu przez przegldark.............................................................44
CodeInsight budka suflera .....................................................................................47
Parametry odbierane z dokumentu HTML .................................................................48
Kontrola dziaania apletu poprzez komponenty sterujce i ich metody zdarzeniowe....52
Jak skasowa niepotrzebn metod zdarzeniow? .....................................................59
Modyfikacja konfiguracji uruchamiania ...........................................................................59
Kilka sw o debugowaniu................................................................................................63
Spis treci
7
Tworzenie pliku uruchamialnego....................................................................................294
Tworzenie dokumentacji .................................................................................................296
Tworzenie dokumentacji za pomoc javadoc z JDK................................................297
Kreator Javadoc ........................................................................................................300
Rozdzia 6.
Komponenty JavaBean
od rodka
Wykorzystamy teraz wiedz i praktyczne umiejtnoci na temat Javy i JBuildera zdobyte w poprzednich rozdziaach do stworzenia komponentu JavaBean1. Ziarenko, ktre
przygotujemy, bdzie cyklicznie zmieniao kolory, czyli mwic prociej bdzie
migajcym przyciskiem. Tak zreszt nazwiemy nasz komponent
.
Niestety, bdziemy musieli w duym stopniu przygotowa ten komponent rcznie.
O ile w wersji komercyjnej JBuilder zawiera narzdzia
i
,
ktre wydatnie wspomagaj tworzenie ziarenek JavaBean, to w wersji darmowej
JBuildera dziaaj one tylko przez 30 dni od instalacji. Mimo to, take w JBuilder
Foundation, istnieje moliwo wzgldnie szybkiego przygotowania komponentu
JavaBean, o czym postaram si Czytelnika przekona w wiczeniach z tego rozdziau.
W pierwszej czci rozdziau przedstawi podstawowe informacje o projektowaniu
komponentw w JBuilder Foundation, w tym o definiowaniu ich nowych waciwoci
i zdarze. Nastpnie omwi procedur instalacji komponentw w JBuilderze, a na
kocu sposb przygotowania klasy typu
.
Najwaciwsz form dystrybucji komponentu jest archiwum JAR. Jak je tworzy,
dowiemy si w rozdziale 7.
Bean w jzyku angielskim oznacza ziarno, ziarenko. W kofeinowej poetyce Javy chodzi najpewniej
o ziarenko kawy.
232
przycisk, w ktrym cyklicznie zamieniane s kolory ta i napisu. Klas
rozszerzymy o nowe waciwoci ,
oraz
umoliwiajce
kontrol migania przycisku.
Klasa MigajacyPrzycisk
i rodowisko do jej testowania
Podczas projektowania komponentu wygodnie jest mie aplet, w ktrym moemy go
od razu testowa. Dlatego zaczniemy od zdefiniowania dwch klas, klasy komponentu
oraz klasy apletu
.
wiczenie 6.1.
Aby stworzy klas o nazwie
rozszerzajc klas
:
1. Z menu File wybieramy pozycj New Class.
2. W kreatorze klasy (rysunek 6.1) podajemy:
a) nazw pakietu (pole Package) !
b)
"##$#Class name%#
oraz
c) klas bazow (Base class)
.
Rysunek 6.1.
Rozszerzanie klasy
java.awt.Button
publiczna.
4. Naciskamy OK.
233
wiczenie 6.2.
Aby stworzy aplet
, ktry bdzie suy do testowania klasy
:
1. Uruchamiamy kreator apletu, a wic z menu File wybieramy pozycj New,
uruchamiania.
5. W komercyjnych wersjach JBuildera zmieniamy domyln konfiguracj
234
Rysunek 6.2.
Kreator apletu
wiczenie 6.3
Aby w aplecie
zdefiniowa dwa obiekty typu
:
1. Dodajemy w obrbie klasy apletu dwie linie wyrnione na poniszym listingu.
Listing 6.2. W klasie apletu deklarujemy dwa obiekty typu MigajacyPrzycisk
!
'(
"
& )*
++' !!,-.
wiczenie 6.4.
Aby zdefiniowane w poprzednim wiczeniu przyciski umieci na powierzchni apletu:
1. Umieszczamy w metodzie ( apletu wywoanie metody '' dla
kadego z przyciskw:
/
#$
"
%
235
wiczenie 6.5.
Aby korzystajc z moliwoci projektowania RAD zmieni rozmiar i pooenie
przyciskw na powierzchni apletu:
1. Pozostajemy w widoku projektowania (zakadka Design).
2. W oknie struktury zaznaczamy obiekt apletu ().
3. Za pomoc inspektora zmieniamy waciwo apletu na .
wiczenie 6.6.
Aby upewni si, czy komponenty umieszczone na aplecie nie s zwykymi przyciskami
typu
, dodajmy na chwil do konstruktorw klasy
polecenia
zmiany koloru ta:
236
wiczenie 6.7.
Aby sprawdzi, czy aplet dziaa w przegldarce z wyczonym pluginem Java 2:
1. Uruchamiamy zewntrzn przegldark. Jeeli to moliwe wyczamy
plugin Java 2.
2. Wczytujemy stworzony przez JBuildera plik MigajacyPrzycisk.html,
237
.+
lub dla odmiany wykorzysta
interfejs /(, nadajcy korzystajcej z niego klasie niektre waciwoci klasy
wtku 0 '.
Szczerze mwic niezbyt lubi interfejs /(. Wol sam tworzy klas wtku
i definiowa w niej metod tak, jak robilimy to w przypadku
. Jednak poniewa wszystkiego warto si nauczy, wbrew moim upodobaniom tym razem skorzystajmy
z pomocy tego interfejsu.
wiczenie 6.8.
Aby doda do klasy
interfejs /(:
238
239
wiczenie 6.9.
Aby zdefiniowa metod , ktrej zadaniem bdzie uruchamianie wtku
zwizanego z klas
:
1. Definiujemy jako pole klasy prywatn referencj do klasy 0 ' o nazwie
(listing 6.4).
2. Definiujemy prywatn metod bez argumentw i bez zwracanej
wartoci. Wewntrz tej metody tworzymy obiekt klasy 0 ' korzystajc
z konstruktora, ktry jako argument pobiera klas z interfejsem /(.
240
Przypomnijmy podstawowe informacje na temat klasy 0 '. Obiekt tej klasy reprezentuje osobny niezaleny wtek apletu lub aplikacji. Czynnoci wykonywane przez
ten wtek okrelamy definiujc metod klasy wtku. W typowym przypadku, ktry
poznalimy w aplecie
.+
, metod zdefiniowalimy rozszerzajc klas
0 ' nadpisujc nic nierobic metod zdefiniowan w klasie bazowej. Teraz metod
mamy zdefiniowan w klasie
. Prosimy zatem obiekt o wykonanie wanie tej metody wywoujc konstruktor, w ktrym jako argument podajemy
referencj do obiektu przycisku. Warunkiem jest, e obiekt ten musi korzysta z interfejsu /(.
Zdefiniowana przez nas metoda na razie zmienia tylko kolor przycisku na niebieski.
Zatem jeeli po uruchomieniu apletu zobaczymy dwa niebieskie przyciski, moemy
by pewni, e oba te obiekty uruchomiy osobne wtki i wykonana zostaa metoda
na rzecz kadego z nich. Po zakoczeniu wykonywania metody praca wtku automatycznie koczy si4.
wiczenie 6.10.
Aby zdefiniowa metod w taki sposb, eby implementowaa miganie przycisku
z ustalonym okresem:
1. Deklarujemy w klasie
prywatne pole klasy o nazwie
Wyjtkiem jest sytuacja, w ktrej wtek jest tzw. demonem (zob. informacj na ten temat
w dokumentacji metody 3
').
241
Dziaanie metody opiera si na ptli , ktra wykonywana jest dopki, dopty
referencja ma warto rn od . Z tego wynika, e aby zakoczy dziaanie metody i w ten sposb zakoczy dziaanie wtku, wystarczy zmieni warto
pola na .
Wewntrz ptli tworzymy dwie zmienne pomocnicze przechowujce obecne kolory
ta i etykiety przycisku. Nastpnie zamieniamy kolory przycisku miejscami i usypiamy
wtek na czas okrelony przez . Suca do tego metoda 0 ', ktr
poznalimy ju wczeniej, wymaga obsugi wyjtku ' std
odpowiednia konstrukcja .
Po uruchomieniu apletu lub w podgldzie na zakadce Design powinnimy zobaczy
migajce przyciski, ktre teraz rzeczywicie migaj.
wiczenie 6.11.
Aby po naciniciu przyciskw umieszczonych na aplecie
zmieniy si kolory, w jakich one migaj:
1. Przechodzimy do apletu
. Zapewne jest dostpny
a etykiety na ty:
18
*#(
$
"
3
" #
!
" #
%
242
wiczenie 6.12.
Aby do migajcego przycisku doda moliwo opnienia rozpoczcia migania po
utworzeniu obiektu:
1. Wracamy do klasy
(zakadka na grze edytora).
2. Deklarujemy kolejne globalne pole o nazwie
zainicjowane
wartoci 3000:
!
):222
/0
#4) $
"
5 6
)
7#$
5 3 )
#$
7# 3 $
# 6
$
"
#$%
#/
$"&
#
#$$%
%
%
243
Idea jest prosta. Naley upi wtek na czas okrelony przez
, zanim rozpocznie si ptla zmieniajca kolory. Aby zobaczy efekt tej modyfikacji, mona przeczy edytor w widok projektowania lub uruchomi aplet naciskajc F9.
Waciwoci komponentw
W rozdziale 2. kontrastowalimy zmienne i funkcje z polami i metodami klas. Tylko
te drugie s dostpne w Javie. W jzykach zwizanych z programowaniem RAD istnieje
zazwyczaj jeszcze jeden element klas waciwo. Konstrukcja ta tworzy pewnego
rodzaju pomost midzy metodami a polami klasy. Jej gwnym zadaniem jest przygotowanie klasy komponentu do wsppracy z narzdziami typu inspektor.
Jak przekonalimy si w rozdziale 2. na przykadzie klasy 1, korzystanie z metod
dostpu typu jest waciwsze od bezporedniego modyfikowania pl obiektu.
Moliwa jest w ten sposb kontrola ustalanej wartoci pola, a ponadto korzystanie
z metody pozwala na synchronizacj pozostaych waciwoci obiektu, jeeli te s
w jaki sposb zalene od modyfikowanego pola. Konstrukcja waciwoci klasy
wykorzystuje te korzyci wynikajce z korzystania z metod dostpu podczas projektowania RAD.
Jak wspomniaem przed chwil, do jzykw zwizanych z narzdziami typu RAD
(np. Delphi i C++ Builder) dodawana jest konstrukcja, ktra udostpnia tzw. waciwo
obiektu wic par metod i zwizanych z dan waciwoci. W Object
Pascalu naley waciwoci zadeklarowa osobno za pomoc sowa (do C++
w C++ Builderze Borland doda w tym celu niestandardowe sowo kluczowe 22 ).
Dla programisty uywajcego klasy korzystanie z waciwoci5 niczym nie rni si
od modyfikowania pola. Jednak rnica istnieje i to powana; zmiana wartoci waciwoci powoduje wywoanie metody , a jej odczytanie metody . W Delphi
i C++ Builderze waciwoci obiektw mog by dostpne w Object Inspector, jeeli
zadeklarowane s jako (' czyli opublikowane (nowy zakres dostpu).
W Javie sytuacja jest nieco prostsza. Po pierwsze, nie istnieje specjalne sowo kluczowe
pozwalajce na konstruowanie waciwoci. Przez to tworzc rcznie kod rdowy
nadal mamy dostp tylko do metod i . Po drugie, wszystkie rodowiska
programistyczne RAD Javy, w tym JBuilder, rozpoznaj waciwoci tylko po odpowiednio zdefiniowanej parze metod dostpu i i dodaj tak okrelon waciwo do odpowiednikw inspektora. W tej sytuacji z waciwoci moemy korzysta
jedynie podczas projektowania RAD.
W kolejnych wiczeniach zajmiemy si tworzeniem metod dostpu do pl
i
, ktre bd rozpoznawane jako okrelajce waciwoci komponentu
i zostan dodane do waciwoci widocznych w inspektorze.
Naley zwrci uwag, e w czystym C++ waciwoci nazywa si zazwyczaj to, co w Javie i Object
Pascalu jest polem. Standard C++ nie zna konstrukcji waciwoci. Jest on dodany np. w C++ Builderze
jako element niestandardowy (dlatego sowo kluczowe ma tu dwa znaki podkrelenia).
244
Mona stworzy te metody rcznie, ale o wiele szybciej mona je zdefiniowa korzystajc z minimalnego wsparcia, jakie w wersji JBuilder Foundation jest dostpne przy
budowaniu komponentw JavaBean (szcztkowe fragmenty BeansExpress).
wiczenie 6.13.
Aby przygotowa metody pozwalajce na czytanie i modyfikacj waciwoci
i
:
1. Zmieniamy zakadk na grze okna edytora na MigajacyPrzycisk.
podzakadk Properties.
3. Zobaczymy tabel z zadeklarowanymi polami klasy: ,
i
(rysunek 6.5) Kolumny tej tabeli to: nazwa waciwoci (Name),
zadeklarowany typ (Type), moliwo pobrania wartoci przez metod
si we waciwo.
Zakadka Bean ukrywa wspomniane wczeniej narzdzie BeansExpress. Niestety, w wersji Foundation
jest ono nieaktywne. Jedyny element, ktry jest dostpny, wykorzystujemy w tym wiczeniu.
245
wiczenie 6.14.
Aby zobaczy nowe waciwoci:
1. Z menu Project wybieramy polecenie Rebuild Project "helion.jpx".
wiczenie 6.15.
Aby w aplecie
za pomoc inspektora zmieni okres migania
przycisku ) na 500 milisekund:
1. W edytorze przechodzimy do klasy apletu
.
2. Zmieniamy zakadk na Design.
3. Zaznaczamy komponent ).
4. W oknie inspektora zobaczymy wszystkie waciwoci komponentu, a midzy
nimi trzy nowe waciwoci i
. Zmiemy waciwo
wiczenie 6.16.
Aby do komponentu doda metody kontrolujce uruchamianie i zatrzymywanie wtku,
a w konsekwencji wcza i wycza miganie przycisku:
1. W edytorze przechodzimy do klasy
, zakadka Source.
2. Do klasy komponentu dodajemy metod
:
246
(Ctrl+F9).
Po kompilacji w inspektorze pojawi si nowa waciwo o nazwie
,
a przy niej rozwijana lista zawierajca dwie moliwe wartoci True i False7. Warto
wiedzie, e w przypadku waciwoci logicznych nazwa metody pobierajcej warto
waciwoci moe rozpoczyna si od zamiast .
wiczenie 6.17.
Aby zatrzyma miganie przycisku w przypadku uruchomienia metody standardowej
apletu
oraz ponowi po wywoaniu metody :
1. Przechodzimy do edycji klasy
, zakadka Source.
2. Podczas tworzenia apletu
zaznaczylimy opcj
247
#$
"
1
; !#$
9
; !#$
%
248
Proponuj zajrze do rozdziau 4., gdzie samodzielnie definiowalimy nasuchiwacze w aplecie !! .
To powinno nieco pomc w zrozumieniu mechanizmu zdarze.
249
wiczenie 6.18.
Aby zdefiniowa klas , czyli nonik informacji o zdarzeniu:
1. W menu File JBuildera wybieramy pozycj New Class
2. W kreatorze klasy ustalamy:
a) nazw pakietu: ,
b) nazw klasy: ,
c) klas bazow: 3(.
3. Zaznaczamy tylko dwie opcje: Public oraz Override superclass constructor.
4. Klikamy OK.
Powstanie skromna klasa, ktr w przyszoci bdzie mona rozbudowa tak, aby
przenosia np. szczegowe informacje o zdarzeniu i stanie komponentu w trakcie jego
wystpienia. Na razie jedyn wan przekazywan przez t klas informacj jest waciwo zdefiniowana w 3(, ktra identyfikuje obiekt, w ktrym wystpio
zdarzenie. Waciwo ta jest ustalana w momencie tworzenia obiektu zdarzenia; podajemy j w argumencie jedynego konstruktora.
wiczenie 6.19.
Aby zdefiniowa interfejs nasuchiwacza 4 :
1. Wybieramy pozycj New z menu File.
2. W galerii obiektw na stronie General zaznaczamy ikon Interface i
naciskamy OK.
3. W kreatorze interfejsu wpisujemy:
a) nazw pakietu: ,
b) nazw interfejsu: 4 ,
c) nazw interfejsu bazowego: 4 .
4. Naciskamy OK.
5. Za pomoc edytora dodajemy do interfejsu nasuchiwacza deklaracje
10
250
wiczenie 6.20.
Aby do komponentu
doda list zarejestrowanych nasuchiwaczy:
1. Przechodzimy w edytorze do klasy komponentu (zakadka MigajacyPrzycisk).
=
Prawd mwic, to dodalimy do klasy komponentu jedynie referencj, a nie obiekt listy.
Rzeczywisty obiekt zostanie stworzony w metodzie, ktr zdefiniujemy w nastpnym
wiczeniu.
wiczenie 6.21.
Aby do klasy komponentu doda metody pozwalajce na zarejestrowanie i wyrejestrowanie nasuchiwacza:
1. Pozostajemy w kodzie klasy
.
2. Dodajemy do klasy definicj metody ''4 dodajcej nasuchiwacz
251
*#4
<
#
$$
<
#
$
%
wiczenie 6.22.
Aby w aplecie testowym stworzy metod zdarzeniow odpowiadajc zdarzeniu
:
1. Przejdmy w edytorze do apletu
.
2. W widoku projektowania (zakadka Design edytora) zaznaczmy migajcy
przycisk ).
252
Do metody ( zostao dodane wywoanie zdefiniowanej przez nas przed chwil
metody rejestrujcej nasuchiwacz w komponencie ):
1
<
#
!
'818
(#
$$
wiczenie 6.23.
Aby doda do metody zdarzeniowej z poprzedniego wiczenia polecenia zmieniajce
kolor ta apletu:
1. Do stworzonej w poprzednim wiczeniu przez JBuildera metody zdarzeniowej
253
wiczenie 6.24.
Aby zdefiniowa metody informujce nasuchiwacze typu 4 o wystpieniu zdarze w migajcym przycisku:
1. Wracamy do klasy komponentu (zakadka MigajacyPrzycisk edytora).
2. Dodajemy do klasy metody z listingu 6.7.
Listing 6.7. Metody informujce nasuchiwacze o wystpieniu zdarzenia
0!!#
$
"
*#
<
)) $
*#
)2
?
<
!#$
@@$
##
<
$
<
(#
$$
0!!#$
%
A!#
$
"
*#
<
)) $
*#
)2
?
<
!#$
@@$
##
<
$
<
(#
$$
A!#$
%
#
$
"
*#
<
)) $
*#
)2
?
<
!#$
@@$
##
<
$
<
(#
$$
#$
%
wiczenie 6.25.
Aby umieci w klasie komponentu metody :
1. Do metody dodajemy polecenia zaznaczone na listingu 6.8.
254