Nebojte se ten vas model podedit z AbstractTableModel. A kdyz rikam
Abstract, nemyslim tim Default. Ten AbstractTM vam prave naimplementuje
podporu listeneru, zbytek metod modelu si nechte jak je mate.
Martin Jedlička píše v Út 20. 02. 2007 v 08:46 +0100:
> Ted jsem udelal takovy pokus. Pridal jsem toto:
> m_table.getModel().addTableModelListener(new TableModelListener() {
> public void tableChanged(TableModelEvent e) {
> if(e.getType() == TableModelEvent.UPDATE){
> m_dm.fireTableChanged(e);
> }
> }
> } );
>
> pricemz : m_dm je ten model oddedeny od DefaultTableModel.
> m_table je ta tabulka JTable
>
> kdyz to ale spustim a udelam nejakou zmenu v tabulce, tak mi to vyhodi
> vyjimku:
> Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
> prave na tom radku m_dm.fireTableChanged(e);
>
> jde to vubec takto udelat? nebo co delam spatne?
>
> Martin
>
>
>
> Tomas Zverina napsal(a):
> > Ikonka se zmeni, pokud model tabulky vyvola udalost, ze se zmenil.
> > Samotne nacpani do vecotru stacit nebude, musite krome nacpani
> > informovat vsechny listenery toho modelu, ze jste neco zmenil.
> >
> > Pokud jste dedil AbstractTableModel, poohlednete se v nem po fire*
> > metodach, jak uz psala Lucka.
> >
> > Pokud jste ho nededil, pak jste nejspis osidil metody
> > addTableModelListener a removeTableModelListener a ted toho litujete :-)
> >
> > Martin Jedlička píše v Po 19. 02. 2007 v 16:59 +0100:
> >
> >> Nekam ne to navedlo, ale bohuzel nevim, zda spravnym smerem.
> >> Model tabulky mam vlastni (razeni) oddedeny od DefaultTableModel.
> >> Kazdy radek vkladam jako vektor (resp. mam vlastni tridu oddedenou od
> >> Vektoru). Potom mam pole techto vektoru reprezentujici ty radky.
> >> Kdyz zmenim neco v jednom vektoru (napr. prvni element je cesta k
> >> ikonce), tak potrebuju, aby se mi ta ikonka taky zmenila v tabulce...
> >>
> >> M.
> >>
> >>
> >> Lucie Rut Bittnerova napsal(a):
> >>
> >>> On Mon, 19 Feb 2007, Martin Jedlička wrote:
> >>>
> >>>
> >>>
> >>>> Zdravim,
> >>>> potreboval bych v tabulce mit na kazdem radku ikonku, ktera by se dala
> >>>> menit po kliknuti napr. nejakeho tlacitka. Myslel jsem, ze to vyresim
> >>>> tak, ze pouziju vlastni CellRenderer oddedeny od JButton (rozhranni
> >>>> TableCellRenderer) a pak CellEditor oddedeny od DefaultCellEditor.
> >>>> Bohuzel ted nevim, jak vyresit to, aby se mi zmenila ikonka na danem
> >>>> radku, aniz bych na ten radek kliknul....(pri kliknuti je to jednoduchy
> >>>> pomoci getTableCellEditorComponent). Proste bych to potreboval udelat
> >>>> tak,abych zadal pouze cislo radku (napr. nekde v jinem okne) a po
> >>>> kliknuti nejakeho tlacitka se na na danem radku zmenila ikonka.
> >>>>
> >>>> Nevite, jak na to? Dekuju za kazdou radu.
> >>>>
> >>>> Martin
> >>>>
> >>>>
> >>> Dobry den!
> >>>
> >>> Nevim, jestli chapu presne co chcete, ale snad Vam pomuze
> >>> toto.
> >>>
> >>> Ikona by mela zaviset tedy asi na nejakych datech v
> >>> TableModel, ktera aktualizujete pri vyvolani akce, po ktere
> >>> ma nasledovat zmena vybrane ikony v tabulce (napr. po tom kliknuti
> >>> uzivatelem na nejake tlacitko). Model tabulky muze napriklad
> >>> ikonu predavat primo jako obsah nektereho sloupce tabulky,
> >>> coz je nejjednodussi varianta.
> >>>
> >>> Po aktualizaci se pak v modelu tabulky zavola metoda
> >>> fireTableCellUpdated(...) nebo nektera z obdobnych metod,
> >>> ktere informuji posluchace udalosti (mezi nimiz je JTable) o
> >>> zmene modelu tabulky.
> >>>
> >>> Lucie
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
--
S pozdravem,
Tomas Zverina
Multimedia atelier s.r.o.
Na Dolinách 4
147 00 Praha 4
IČO: 25127071
tel.: 241 433 120
e-mail: [EMAIL PROTECTED]
http://www.m-atelier.cz/
Společnost Multimedia atelier s.r.o. je zapsána u rejstříkového soudu v
Praze, oddíl C, vložka 51961.