10 marca
09:31 2009
ProgressIcon to prosta implementacja javax.swing.Icon, która oprócz zwykłego obrazka ikony, wyświetla również "pasek postępu".
Ikona ProgressIcon umieszczona na przycisku JButton:
Kod powstał w ramach eksperymentów, więc API może być trochę niekompletne ;)
Proszę o komentarz
System.out.println(graphics typeof Graphics2D);
>> true
Tle pamiętam z Grafiki komputerowej w zeszłym semie, że wszystkie nowe javy automatem już przekazując Graphics2D jako referencję do wszystkich funkcji paint*. Wystarczy zrzutować.
PS. O co chodzi z tym WeakReference?
@zwierzak: Zgadza się. Zamiast graphics.create() można zrobić (Graphics2D)graphics. Jednak kopia „graphics” jest wygodniejsza, ponieważ nie muszę się martwić o to jak np. zmiana przezroczystości wpłynie na rysowanie reszty przycisku, który może przecież korzystać z tego samego „graphics”.
WeakReference to takie odwołanie do innego obiektu, które się samo ustawi na „null”. Dzięki temu klasa ProgressIcon nie będzie trzymać referencji do innego obiektu w nieskończoność i unikniemy potencjalnego wycieku pamięci (tak na wszelki wypadek ;)
Ano masz rację, o tym nie pomyślałem. Do tej pory zawsze rzutowaliśmy, ale należało pamiętać o przywróceniu domyślnych ustawień, w wypadku AffineTransform było proste, ale nie zawsze to się pamięta. Sztuczka warta zapamiętania.