j'ai un programme qui permet d'afficher un JTable à partir d(un vecteur
ça fonctionne mais le problème est lorsque je clique dans une cellule elle devient vide
voici mon code
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 package teste; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.AbstractTableModel; import FENETRE1.Connection1; import FENETRE1.Suivi_eleve; import FENETRE1.Suivi_eleve.SimpleTableModel; public class Note1 extends JFrame { Connection1 coo=new Connection1(); String classe=coo.selectionner_Classe_courant(); public Note1(){ Vector vec=coo.select_eleve(classe); Vector vect = new Vector(4,1); affect(vect,vec); Model model=new Model(vect); JTable table=new JTable(model); } public void tab1(){ } public JPanel details(){ JPanel pan=new JPanel(); Vector vect=coo.select_eleve(classe); Model model=new Model(vect); JTable table=new JTable(model); JScrollPane scrollPane = new JScrollPane(table); pan.add(scrollPane); return pan; } public void affect(Vector v1,Vector v2){ ///v1=new Vector(4,1); for(int i=0;i<v2.size()-1;i+=2){ String val1=(String)v2.elementAt(i); String val2=(String)v2.elementAt(i+1); String val=val1+" "+val2; v1.add(val); System.out.println(val); } }
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 public class Model extends AbstractTableModel { public static final int controle1 = 0; public static final int controle2 = 1; public static final int orale = 2; public static final int tp = 3; public static final int synthese = 4; public static final int moyenne= 5; public String[] e_colNames = {"Nom et Prenom", " devoir de Controle N°1", "devoir de Controle N°2", "Note Orale", "Note TP", "devoir de Synthèse", "Moyenne trimestrielle" }; public Class[] e_colTypes = {String.class, String.class, String.class, String.class, String.class, String.class, String.class, }; Vector eDataVector=new Vector(4,2);; String s=new String(""); int i=0; public Model(Vector macDataVector) { super(); affect(eDataVector,macDataVector); //eDataVector = macDataVector; } public int getColumnCount() { return e_colNames.length; } public int getRowCount() { return eDataVector.size(); } public void setValueAt(Object value, int row, int col) { int i=0; if (i<(eDataVector.size()-1)&&(col<=1)){ if(col==0); s=(String)eDataVector.elementAt(i); i++; } } public String getColumnName(int col) { return e_colNames[col]; } public Class getColumnClass(int col) { return e_colTypes[col]; } public Object getValueAt(int row, int col) { if (i<(eDataVector.size())&& (col==0)){ s=(String)eDataVector.elementAt(i); i++; //System.out.println((String)eDataVector.elementAt(i)); } else s=""; return s; } public boolean isCellEditable(int row, int col) { //Note that the data/cell address is constant, //no matter where the cell appears onscreen. if (col <2) { return false; } else { return true; } } }une solution si c'est possible
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public static void main(String[] arg) { Note1 su=new Note1(); JPanel panel=su.details(); JFrame fr=new JFrame("teste"); fr.add(panel); fr.setVisible(true); fr.setSize(new Dimension(470, 460)); fr.validate(); } }
merci d'avance
Partager