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 :
Le probleme est qu'on ne voit pas le chargement de la JprogressBar.
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; } }
(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) :
Bref mes JProgressBar ne se rafraichissent toujours pas...
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); }![]()
Ils marchent tres bien. C'est juste une fois inserer dans la Table qu'ils ne se rafraichissent pas automatiquement.
Partager