To ale prijdu o metody addRow a removeRow. Navic DefaultTM je oddedeny od AbstractTM, takze by to melo taky fungovat ne?

Tomas Zverina napsal(a):
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




Odpovedet emailem