Odnośniki
|
[ Pobierz całość w formacie PDF ] korzystać metodę . Aby użyć w komórkach tabeli edytora listy rozwijalnej, musimy go zainstalować samo- dzielnie, ponieważ klasa nie może sama ustalić zbioru wartości dla danego typu komórki. W przypadku komórek kolumny Moons naszej tabeli umożliwimy użytkowni- kowi wybór wartości z przedziału od 0 do 20. Poniżej fragment kodu inicjujący listę rozwijalną. 458 Java 2. Techniki zaawansowane Następnie utworzymy obiekt klasy , przekazując listę jako parametr jego konstruktora: Musimy jeszcze zainstalować utworzony edytor. W przeciwieństwie do edytora kolorów nie zwiążemy go z określonym typem, ponieważ nie chcemy, by używany był przez tabelę dla wszystkich komórek typu . Zamiast tego zainstalujemy go jedynie dla określo- nej kolumny tabeli. Klasa przechowuje informację o kolumnach tabeli, korzystając z obiektów typu . Klasa zarządza natomiast kolumnami. (Rysunek 6.34 przed- stawia zależności między najważniejszymi klasami związanymi z tabelami). Jeśli nie pla- nujemy dynamicznie umieszczać w tabeli nowych kolumn bądz usuwać istniejących, to nie musimy korzystać z usług modelu kolumn tabeli z wyjątkiem sytuacji, w której chcemy uzyskać obiekt dla pewnej kolumny: Rysunek 6.34. Zależności między klasami tabel Dysponując obiektem kolumny, możemy zainstalować edytor jej komórek: Jeśli chcemy zmienić wysokość komórek tabeli, skorzystamy z poniższej metody. Domyślnie wszystkie wiersze tabeli posiadają tę samą wysokość. Możemy jednak zmienić wysokość poszczególnych wierszy, psługując się wywołaniem: Rzeczywista wysokość komórki pomniejszona będzie o jej margines, który domyślnie wy- nosi 1. Wielkość marginesu możemy zmienić, używając poniższej metody. Rozdział 6. Zaawansowane możliwości pakietu Swing 459 Tworzenie własnych edytorów Jeśli uruchomimy przykładowy program i wybierzemy za pomocą myszy komórkę zawie- rającą kolor, to otworzy się okno dialogowe wyboru koloru. Użytkownik może wybrać no- wy kolor i zaakceptować go przyciskiem OK, co spowoduje zmianę koloru komórki tabeli (patrz rysunek 6.35). Rysunek 6.35. Wybór koloru komórki Edytor koloru komórek nie jest standardowym edytorem tabeli. Aby utworzyć własny edytor, należy zaimplementować interfejs . Jest to dość pracochłonne za- danie i dlatego wersja SDK 1.3 wprowadziła klasę zawierającą imple- mentację obsługi zdarzeń. Metoda interfejsu pobiera komponent rysu- jący komórkę tabeli. Jest zdefiniowana tak samo jak metoda interfejsu z tą różnicą, że nie posiada parametru . Ponieważ komórka jest edytowana, to automatycznie przyjmuje się, że wartością tego parametru jest . Komponent edytora zastępuje obiekt rysujący podczas edycji komórki. W naszym przykładzie wywołanie metody zwraca pusty, niepokolorowany panel, sygnalizując w ten sposób, że komórka jest edytowana. Edytor musi rozpocząć swoje działanie po kliknięciu komórki przez użytkownika. 460 Java 2. Techniki zaawansowane Klasa wywołuje edytor dla danego zdarzenia (na przykład kliknięcia myszą), aby sprawdzić, czy spowoduje ono rozpoczęcie procesu edycji. Klasa defi- niuje metodę akceptującą wszystkie zdarzenia. Jeśli zastąpimy tę metodę, tak by zwracała wartość , to tabela w ogóle nie umieści kom- ponentu edytora. Po zainstalowaniu edytora wywoływana jest metoda , prawdopodobnie dla tego samego zdarzenia. Metoda ta rozpocząć powinna proces edycji, na przykład otwie- rając okno dialogowe. Jeśli proces edycji będzie musiał zostać zatrzymany lub przerwany (ponieważ użytkownik wy- brał inną komórkę tabeli), to wywołana zostanie metoda lub . Powinniśmy wtedy zamknąć okno dialogowe. Wywołanie metody ozna- cza, że tabela chce zachować wartość zmodyfikowaną w procesie edycji. Metoda powinna zwrócić wartość , jeśli wartość komórki jest dozwolona. W przypadku wyboru kolorów do- zwolona będzie dowolna wartość. Jednak jeśli tworzymy edytor innych rodzajów danych, to [ Pobierz całość w formacie PDF ] |
|||
Sitedesign by AltusUmbrae. |