image Strona poczÂątkowa       image Ecma 262       image balladyna_2       image chili600       image Zenczak 2       image Hobbit       

Podstrony

[ Pobierz całość w formacie PDF ]

to, że powinniśmy zastanowić się nad implementacją własnego modelu tabeli.
Implementacja własnego modelu tabeli nie jest trudna, ponieważ wykorzystać możemy klasę
, która dostarcza implementacji większości potrzebnych metod. Sami
zaimplementować musimy jedynie trzy poniższe metody:
Istnieje wiele sposobów implementacji metody . Możemy po prostu wyliczyć
odpowiednią wartość na żądanie lub pobrać konkretną wartość z bazy danych. Przyjrzyjmy
się kilku przykładom.
W pierwszym z nich tabela zawierać będzie wartości, które wyliczy program. Będą one
przedstawiać wzrost inwestycji w różnych scenariuszach (patrz rysunek 6.28).
Rysunek 6.28.
Tabela reprezentująca
wzrost inwestycji
Metoda wyznacza odpowiednią wartość i formatuje ją:
438 Java 2. Techniki zaawansowane
Metody i zwracają odpowiednio liczbę wierszy i kolumn tabeli.
Jeśli nie podamy nazw kolumn, to metoda klasy nazwie
kolejne kolumny A, B, C itd. Aby zmienić nazwy kolumn, zastąpimy metodę
i wykorzystamy procentowy przyrost inwestycji jako nazwę kolumn.
Kompletny kod zródłowy programu zawiera listing 6.10.
Listing 6.10. InvestmentTable.java

Rozdział 6. Zaawansowane możliwości pakietu Swing 439
440 Java 2. Techniki zaawansowane
Prezentacja rekordów bazy danych
Prawdopodobnie najczęściej reprezentowaną przez komponent tabeli informacją jest zbiór
rekordów pochodzących z bazy danych. Korzystając ze środowiska tworzenia aplikacji,
dysponujemy prawie zawsze gotowymi komponentami JavaBeans dla wykorzystania bazy
danych. Warto jednak zobaczyć, w jaki sposób sami prezentować możemy za pomocą ta-
beli dane z bazy i temu zadaniu służy kolejny przykład. Rysunek 6.29 pokazuje efekt jego
działania  wynik zapytania o wszystkie rekordy wybranej tabeli bazy danych.
Rysunek 6.29.
Prezentacja
wyniku zapytania
za pomocą tabeli
Przykładowy program definiuje własny model danych za pomocą klasy
, który pobiera dane będące wynikiem zapytania do bazy danych. (Rozdział 4. poświę-
cony jest dostępowi do baz danych w języku Java).
Liczbę kolumn i ich nazwy uzyskujemy, korzystając z obiektu reprezentującego meta-
dane opisujące zbiór rekordów:

Rozdział 6. Zaawansowane możliwości pakietu Swing 441
Jeśli baza danych dysponuje przewijalnymi kursorami, to wartość komórki możemy uzy-
skać bardzo łatwo, przesuwając kursor do danego wiersza i pobierając wartość kolumny.
Wykorzystanie w tym przypadku własnego modelu danych zamiast domyślnego modelu
posiada szczególny sens. Jeśli utworzylibyśmy własną tablicę wartości,
to niepotrzebnie duplikowalibyśmy zawartość bufora sterownika bazy danych.
Jeśli baza danych nie dysponuje przewijalnymi kursorami lub korzystamy ze sterownika
zgodnego ze specyfikacją JDBC 1, to sami musimy buforować wynik zapytania. Program
ukazany w przykładzie umożliwia zarządzanie takim buforem. Klasa
buforuje wynik zapytania, natomiast klasa wyko-
rzystuje przewijalny kursor. Funkcjonalność wspólną dla obu klas wyodrębniliśmy w klasie
.
Listing 6.11. ResultSetTable.java
442 Java 2. Techniki zaawansowane

Rozdział 6. Zaawansowane możliwości pakietu Swing 443
444 Java 2. Techniki zaawansowane

Rozdział 6. Zaawansowane możliwości pakietu Swing 445
446 Java 2. Techniki zaawansowane

Rozdział 6. Zaawansowane możliwości pakietu Swing 447
Filtry sortujące
Dwa ostatnie przykłady wykazały, że tabele nie przechowują pokazywanych za ich pomocą
danych, lecz pobierają je, korzystając z modelu. Także i model nie musi przechowywać da-
nych  może wyliczać ich wartości na żądania lub pobierać je z bazy danych.
Wprowadzimy teraz kolejny przydatny mechanizm zwany modelem filtra, który umożliwia
prezentację informacji danej tablicy w innej formie. W naszym przykładzie forma ta pole-
gać będzie na posortowaniu wierszy tabeli. Po uruchomieniu programu, którego tekst zró-
dłowy zawiera listing 6.12, spróbujmy kliknąć dwukrotnie jedną z kolumn tabeli. Spowo-
duje to uporządkowanie tabeli według wartości wybranej kolumny (patrz rysunek 6.30).
Rysunek 6.30.
Sortowanie
wierszy tabeli
448 Java 2. Techniki zaawansowane
Sortowanie tabeli nie powoduje jednak uporządkowania danych modelu. Za posortowanie
danych odpowiedzialny jest bowiem model filtra.
Przechowuje on referencję do modelu tabeli. Gdy komponent tabeli pobiera wiersz do pre-
zentacji, to model filtra wyznacza rzeczywisty wiersz tabeli i pobiera go z modelu tabeli.
Oto przykład
Wywołania pozostałych metod przekazywane są po prostu do oryginalnego modelu tabeli.
Rysunek 6.31 pokazuje sposób, w jaki model filtra współdziała z obiektem klasy
i rzeczywistym modelem tabeli.
Rysunek 6.31.
Model filtra tabeli
Z implementacją takiego filtra związane są dwa zagadnienia. Po pierwsze, gdy użytkownik
kliknie dwukrotnie jedną z kolumn, to model filtra musi otrzymać informację o tym. Nie
będziemy omawiać związanych z tym szczegółów implementacji. Odpowiedni kod odnaj-
dziemy wewnątrz metody klasy w tekście listingu 6.12.
Działa on w następujący sposób. Najpierw pobieramy komponent nagłówka tabeli i doda-
jemy do niego obiekt nasłuchujący zdarzeń związanych z myszą. Kiedy wykryje on dwu-
krotne kliknięcie, musi uzyskać informację o kolumnie, której ono dotyczy. Następnie [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kskarol.keep.pl