JTable + JButton + JLabel
Piotr Kopernick - 14-09-2006 02:06
JTable + JButton + JLabel
Witam
Chciałem zapytać czy ktoś wie jak zrobić, aby w jednej komórce w JTable zrobić mały JLabel i JButton (potrzebne mi to do wybierania pliku przez JFileChooser). JButton ma wystąpić w roli aktywatora "okienka wyboru pliku".
Po zainicjowaniu juz obiektu JTable ustawiam odpowiedni renderer
jTable1.setDefaultRenderer(MyFile.class, new MyFileCellRenderer(jTable1));
Zrobiłem to tak: w moim modelu w metodzie getColumnClass(int columnIndex) zwracam MyFile.class(tak naprawde jest to opakowany String) dla odpowiedniej kolumny
MyFileCellRenderer w metodzie getTableCellRendererComponent(...) zwracam panelek na ktorym umieszczony jest okreslony JLabel oraz JButton
Do tego JButton'a - ktory jest polem prywatnym - dodaje ActionListener (klasa wewnetrz implementujaca ActionListener z odpowiednim konstruktorem, zeby miec dostep do wartosci z JTable)
Oczywiscie w tym miejscu po uruchomieniu aplikacji renderuje sie ladnie, ale nie moge wcisnac przycisku. Doszedlem wiec do tego, ze musze zrobic wlasnego CellEditora dla tej komorki, a nastepnie go ustawic.
Jakies pomysly jak to zrealizowac? Bo do tej pory tak namieszalem, ze az wstyk kod wklejac... Generalnie metoda getTableCellEditorComponent() zwraca to samo co odpowiadajaca jej metoda renderujaca, przy czym po kilku akcjach (nacisniecie przycisku, przejazd myszka, zaznaczenie komorki) zaczyna sie wszystko rozsypywac, przycisk znika, pojawia sie, nazwy plikow znikaja...
Moj koncept byl taki, ze w jednej klasie (renderujacej) umiescilem klasy wewnetrzne: a) implementujaca ActionListener (+ konstruktor, zebym mogl sie dobrac do danych z tabeli) b) implementujaca TableCellEditor (tutaj na razie we wszystkich metodach zwracajacych boolean zwracam true - pewnie to blad, ale nie bardzo kumam po co one wogole sa, a dokumentacja mi wiele nie wyjasnia)
Jakies sugestie/linki/itp. mile widziane.
Pozdrawiam piotr.koper
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Krzysztof Wolny - 14-09-2006 02:06
Piotr Kopernick napisał(a):
> Jakies pomysly jak to zrealizowac? Bo do tej pory tak namieszalem, ze az wstyk > kod wklejac... Generalnie metoda getTableCellEditorComponent() zwraca to samo > co odpowiadajaca jej metoda renderujaca, przy czym po kilku akcjach > (nacisniecie przycisku, przejazd myszka, zaznaczenie komorki) zaczyna sie > wszystko rozsypywac, przycisk znika, pojawia sie, nazwy plikow znikaja...
> Moj koncept byl taki, ze w jednej klasie (renderujacej) umiescilem klasy > wewnetrzne: > a) implementujaca ActionListener (+ konstruktor, zebym mogl sie dobrac do > danych z tabeli) > b) implementujaca TableCellEditor (tutaj na razie we wszystkich metodach > zwracajacych boolean zwracam true - pewnie to blad, ale nie bardzo kumam po co > one wogole sa, a dokumentacja mi wiele nie wyjasnia) > > Jakies sugestie/linki/itp. mile widziane.
jako renderer wystarczy sam JLabel czyli de facto brak renderera, tylko zwykly string mozesz tam pakowac z nwzwa pliku, no chyab ze chcesz ikonke np. bo nei ma sensu np. w przypadku 100 plikow pokazywac do kazdego z nich button do jego zmiany.
codo linkow to tutorial na stronie suna, znajdziesz go jak zaggoglasz pod haslem "using jtable"
-- ================================ Krzysztof Wolny
[ http://rtfm.bsdzine.org ][ http://tiny.pl/g776 ]
O: No bo normalnie to każdy czyta z góry na dół... P: Dlaczego ??? O: Pisanie nad cytatem ! P: Co należy do bardziej wkurzających obyczajów niektorych ludzi ?
Krzysztof Wolny - 14-09-2006 02:06
Piotr Kopernick napisał(a):
> Jakies sugestie/linki/itp. mile widziane.
wydlubalem sobie taki przykladzik, poszedl na mejla ;)
-- ================================ Krzysztof Wolny
[ http://rtfm.bsdzine.org ][ http://tiny.pl/g776 ]
O: No bo normalnie to każdy czyta z góry na dół... P: Dlaczego ??? O: Pisanie nad cytatem ! P: Co należy do bardziej wkurzających obyczajów niektorych ludzi ?
Piotr Kopernick - 14-09-2006 02:06
Krzysztof Wolny <ka.wu_o_el_en_y@gie_em_a_i_el.ce_o_em> napisał(a):
> Piotr Kopernick napisał(a): > > > Jakies sugestie/linki/itp. mile widziane. > > wydlubalem sobie taki przykladzik, poszedl na mejla ;) >
Dziękuję ślicznie. O to mi chodziło (co prawda do renderka wsadzę sobie jeszcze ten przycisk - a może nie...). Tak czy inaczej liczyłem na jakąś podpowiedź/link/google ;) a tutaj taka dobroć.
Jeszcze raz dzięki Pozdrawiam
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Krzysztof Wolny - 19-11-2006 01:44
Piotr Kopernick napisał(a): > Krzysztof Wolny <ka.wu_o_el_en_y@gie_em_a_i_el.ce_o_em> napisał(a): > >> Piotr Kopernick napisał(a): >> >>> Jakies sugestie/linki/itp. mile widziane. >> wydlubalem sobie taki przykladzik, poszedl na mejla ;) >> > > Dziękuję ślicznie. O to mi chodziło (co prawda do renderka wsadzę sobie > jeszcze ten przycisk - a może nie...). Tak czy inaczej liczyłem na jakąś > podpowiedź/link/google ;) a tutaj taka dobroć.
przycisk do renderera to tak srednio IMHO, bo to jest juz czesc edycji :) ale zrobisz jak uwazasz :)
zrobilem bo az sam bylem ciekaw :)
-- ================================ Krzysztof Wolny
[ http://rtfm.bsdzine.org ][ http://tiny.pl/g776 ]
O: No bo normalnie to każdy czyta z góry na dół... P: Dlaczego ??? O: Pisanie nad cytatem ! P: Co należy do bardziej wkurzających obyczajów niektorych ludzi ?
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Jak ustawic kilka "opcji" w JTable
JTable przesuwanie rekordów
[JTable] Problem z odswiezaniem ???
[Java] Problem z JTable
jTable
Skalowanie obrazka w JLabel
link w JButton
Macromedia Flash 8 vs Flash MX 2004
=?iso-8859-2?Q?=5BSQL=5D_Z=B3=B1czenie_kolumn?=
łączenie 2 tabel
zanotowane.pldoc.pisz.plpdf.pisz.plsulimczyk.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|