[ iradulovic81 @ 14.02.2008. 11:00 ] @
Zdravo,

zanima me da li je moguce da se prilikom resize-ovanja kolone tabele ne vrsi stalno repaint-ovanje celija, vec da se to odlozi za kraj resize-a tj. kad se pusti mis, nesto kao sto je slucaj sa kontrolom JSplitPane i propertiem setContinuousLayout(boolean). U pitanju je jre1.5.0.7.

Hvala.

p.s. pronasao sam sledece:

void javax.swing.table.JTableHeader.setUpdateTableInRealTime(boolean flag)
Obsolete as of Java 2 platform v1.3. Real time repaints, in response to column dragging or resizing, are now unconditional.

ali izgleda da ovo vise ne funkcionise.
[ lukeguy @ 14.02.2008. 12:51 ] @
odgovor je u tom delu koji si citirao: ne može se sprečiti.
[ iradulovic81 @ 15.02.2008. 09:51 ] @
Za one koje ova tema zanima evo resenja:

Code:

JTableHeader header = new JTableHeader() {
 
    private static final long serialVersionUID = 1L;
 
    public void setResizingColumn(TableColumn aColumn)
    {
        super.setResizingColumn(aColumn);
        if (getResizingColumn() == null) {
            refreshHeavyRenderer();
            getTable().repaint();
        }
        else {
            TableColumnModel cmodel = this.getColumnModel();
            for (int i = 0; i < cmodel.getColumnCount(); i++) {
                cmodel.getColumn(i).setCellRenderer(
                    new DefaultTableCellRenderer());
            }
        }
    }
};


Poenta je override-ovanje table header-a i detektovanje da li je u toku resize kolone. Ako je resize u toku setuje se default-ni cell renderer koji ne opterecuje gui preterano prilikom repaint-a. Kada se resize zavrsi vraca se zahtevan renderer i radi se repaint.