On Tue, 20 Feb 2007, [UTF-8] Martin Jedlička wrote:

> 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?

Vy jste pridal posluchace udalosti, ktery pri zmene tabulky 
rozesle udalost, ze se zmenila tabulka, cimz se vlastne 
rekurzivne zavola, a tedy jste vytvoril nekonecny cyklus, 
ktery logicky vede k preteceni pameti.

Metodu m_dm.fireTableChanged(...) mate zavolat v okamziku, 
kdy nastane zmena modelu, ale nikoli uvnitr posluchace 
udalosti.

Lucie

Odpovedet emailem