Bonjour,

J'ai ici un probleme de rafraichissement,
j'utilise une JProgressBar dans une JXTable.




Voici la table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
public ProcessObjectTable() {
        super(new BorderLayout());
        modele = new ProcessTableModel();
        table = new JXTable(modele);
        table.setRowHeight(22);
        table.setHorizontalScrollEnabled(false);
        table.setColumnControlVisible(true);
 
 
 
        table.getColumnExt(1).setMaxWidth(100);
        table.getColumnExt(2).setMaxWidth(100);
 
        table.setDefaultRenderer(JButton.class, new ButtonRenderer());
        table.setDefaultEditor(JButton.class,new ButtonEditor());
        table.setDefaultRenderer(JProgressBar.class, new ProgressRenderer());
 
        jsp = new JScrollPane(table);
        add(BorderLayout.CENTER,jsp);
 
    }

J'ai redefini le Cell Renderer comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
/**
 *
 * @author johann Sorel
 */
public class ProgressRenderer implements TableCellRenderer{
 
    /** Creates a new instance of ButtonRenderer */
    public ProgressRenderer() {
    }
 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    return (JProgressBar)value;
    }
 
}
Le probleme est qu'on ne voit pas le chargement de la JprogressBar.
(il ne se redessine pas)


J'ai essayé de faire des mise a jour de la cellule comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
jpb_progress.setIndeterminate(true);
        jpb_progress.setString("En Cours");
 
        new Thread(){
            public void run(){
 
                while(activ){
                    try{
                        sleep(10);
                    }catch(Exception e){}
                    //System.out.println("OK   "+activ);
                    updateTableRender();
                }
                updateLine();
            }
        }.start();
 
//du code long

et les 2 methodes de mise a jour (tab est un TableModel) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
private void updateTableRender(){
        if(activ){
            tab.fireCellUpdated(row,col);
        }
    }
 
    private void updateLine(){
        tab.fireRowUpdated(row);
    }
Bref mes JProgressBar ne se rafraichissent toujours pas...
Ils marchent tres bien. C'est juste une fois inserer dans la Table qu'ils ne se rafraichissent pas automatiquement.