salut a tous,
alors mon probleme est simple j'aimerais pouvoir colorier une ligne de mon jtable lorsque je clique sut un elt de mon jtree (chaque elt de mon jtree correspend a un elt de mon jtable donc je veut faire la relation entre ces deux derniers) j'ai une methode qui met a jour mon jtable et qui crée a chaque fois un nouveau tableau avc un model qui change selon l'index de la ligne a colorier; donc j essayé de l'appeler a l'interrieur de l'actionlistner de mon jtree mais ça ne regle pas le probleme aidez moi svp pske je galaire depuis 3jours pour trouver la solution

donc voila l'actionlistner de mon jtree

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
public void valueChanged(TreeSelectionEvent event) {
      	    if(arbre.getLastSelectedPathComponent() != null){
      	      //La méthode getPath retourne un objet TreePath
 
      	    emplacement_fichier = getAbsolutePath(event.getPath());
      	    boolean trouve =false;
      	    for(int k=0; k<tabf.size() && !trouve;k++){
      	    if ((arbre.getLastSelectedPathComponent().toString()).equals(tabf.get(k).toString())){
      	    	trouve=true;
      	    	System.out.println("trouve!!!!!!!!!!!!!!!!!!!!!!!!!!aaaa"+tabf.get(k).toString());
 
      	    }
      	    }
      	  System.out.println(arbre.getLastSelectedPathComponent().toString());
      	    if (!trouve){
 
      	    	System.out.println("rentre");
      	    	R_racine.get_attributs(emplacement_fichier);
      	    	//fichier selectionné
      	    	boolean trouv = false;
      			String[] tableau=new String[13];
      			int i;
      			for (i=0; (i<R_racine.tab2.size()) && (!trouv); i++){
      				tableau = R_racine.tab2.get(i);
 
      				if (tableau[13].equals(emplacement_fichier)){
      					trouv = true;
      				}
 
      			}b=i;chargement_tableau1();
 
 
 
 
 
      	    }
et voila la methode qui met a jour le jtable

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
public  void chargement_tableau1(){
 
 
	 Object[][] data1 = new Object[512][13] ;       
	 Object [] title1 ={"Nom de fichier","Extension","Attributs du fichier","Réservé,","Heure de création : par unité de 10 ms ","Heure de création","Date de création","Date du dernier accès ","Index EA","Heure de dernière modification","Date de dernière modification","Numéro du premier cluster ","Taille du fichier"};
	 R_racine.lire_repertoire_racine(chemin+"\\"+nom_partition+"_repertoire_racine_file.ser");
	 String[] tab1 = new String[14];
 
	 for(int g = 0 ; g < R_racine.tab2.size() ; g++) {
		tab1 = R_racine.tab2.get(g) ;
		data1[g][0] = tab1[0] ;
		data1[g][1] = tab1[1] ; 
		data1[g][2] = tab1[2] ; 
		data1[g][3] = tab1[3] ; 
		data1[g][4] = tab1[4] ; 
		data1[g][5] = tab1[5] ; 
		data1[g][6] = tab1[6] ; 
		data1[g][7] = tab1[7] ; 
		data1[g][8] = tab1[8] ; 
		data1[g][9] = tab1[9] ; 
		data1[g][10] = tab1[10] ; 
		data1[g][11] = tab1[11] ; 
		data1[g][12] = tab1[12] ; 
 
	 }
 
    JTable tableau1  = new JTable(data1,title1){ 
    	public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
        Color[] colors = {Color.LIGHT_GRAY, new Color(240,240,240), new Color(220,220,120)};
        Component c = super.prepareRenderer(renderer, row, col);
        Color color = getBackground();
        int i;
        System.out.println("000000000000000000000000.0.0.0.0.0.0.-----+"+b+"/"+row);
        if ( row==b) {
 
          c.setBackground(color.red);
        }
        c.setBackground(color.LIGHT_GRAY);
        return c;
      }
    };
 
    tableau1.setFont(new Font("Calibri", Font.PLAIN, 13));
   tableau1.setBackground(myBrightColor); 
   //tableau1.setDefaultRenderer(Object.class, new MonCellRenderer1());
   tableau1.setBorder(BorderFactory.createLineBorder(myBrightColor));
   tableau1.getTableHeader().setReorderingAllowed(false);
   tableau1.getTableHeader().setResizingAllowed(false);
   tableau1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
   modifier(0,200 ,tableau1 );modifier(1,200 ,tableau1 );modifier(2,200 ,tableau1);modifier(3,200 , tableau1);
   modifier(4,200, tableau1);modifier(5,200 , tableau1);modifier(6,200 , tableau1);modifier(7,200 , tableau1);modifier(8,200 , tableau1);modifier(9,200 , tableau1);modifier(10,200 , tableau1);
   modifier(11,200 , tableau1);modifier(12,200 , tableau1);
 
   infoos.setBackground(myBrightColor);
 
   infoos.setBorder(BorderFactory.createTitledBorder("Réportoire racine"));
   infoos.setViewportView(tableau1);}

etvoila le model de mon jtable

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
23
24
25
 
import java.awt.Color;
import java.awt.Component;
 
import javax.swing.JTable;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.DefaultTableCellRenderer;
 
public class MonwCellRenderer1 extends DefaultTableCellRenderer {
	Partition_FAT16 p = new Partition_FAT16();
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		Component cell = super.getTableCellRendererComponent(table, value,
				isSelected, hasFocus, row, column);
 
		if (row==p.b){
			cell.setBackground(Color.RED);
		}else
			cell.setBackground(Color.blue);System.out.println("bleu");
		return cell;
	}
 
 
}

et merci d'avance pour vos interventions