Bonjour à tous

Débutant en java, je cherche à comprendre l'utilisation des Jtables et l'utilisation des modèles en lisant du code. J'ai trouvé un code qui me parait vraiment intéressant.
Mais certaines choses sont difficiles à comprendre.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyListEditor extends AbstractCellEditor implements TableCellEditor
{ 
JList mlist;
 
public MyListEditor()
{
mlist = new JList();
}
 
public Object[] getCellEditorValue() 
{
return ((DefaultListModel)mlist.getModel()).toArray();
}
Que cherche t-on a faire dans :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
((DefaultListModel)mlist.getModel()).toArray();
}
S'agit t-il d'un cast?

De plus dans cette partie de code, pourquoi "caster" l'objet mlist JList ou n'ai-je pas compris? Il a été plus haut comme une JList et on le retrouve dans cette partie de code comme un tableau de string.

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
public Component getTableCellRendererComponent(JTable mtable, Object value,
boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {

if(isSelected)
setBackground(mtable.getSelectionBackground() );
else
setBackground(Color.white );
String stmp;
StringTokenizer st;
int rowHight=mtable.getRowHeight() +mtable.getRowMargin()+1;
int fold;

String[] mlist = (String[]) value;


fold = mlist.length ;
Je mets l'ensemble du code pour voir le contexte.
Ce code vous semble t-il un bon modèle pour un débutant? Ou vous semble t-il qu'il y aurait des choses à améliorer ?
Merci de votre aide.

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
import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
 
import java.util.*;
 
import java.io.*;
public class jtablejlist //extends JFrame
{
 
public void init()
{
Vector data = new Vector();
Vector tmp = new Vector();
 
String[] sdata ={"test1","test2"};
tmp.addElement (sdata);
tmp.addElement ("This is test1");
data.addElement (tmp);
 
tmp = new Vector();
String[] sdata2 ={"stock1","stock2","stock3","stock4"};
tmp.addElement (sdata2);
tmp.addElement ("This is stocks");
data.addElement (tmp);
 
 
Vector cols = new Vector();
cols.addElement ("col1");
cols.addElement ("col2");
 
JTable table = new JTable(data,cols);
TableColumn column = table.getColumnModel().getColumn(0);
MyListEditor area=new MyListEditor();
// ROWHIGHT=table.getRowHeight() +table.getRowMargin()+1; 
column.setCellEditor(area); 
column.setCellRenderer(new MyCellRenderer ());
 
JFrame frame = new JFrame();
frame.getContentPane().add(new JScrollPane(table));
frame.pack();
frame.setVisible(true);
}
 
class MyListEditor extends AbstractCellEditor implements TableCellEditor
{ 
JList mlist;
 
public MyListEditor()
{
mlist = new JList();
}
 
public Object[] getCellEditorValue() 
{
return ((DefaultListModel)mlist.getModel()).toArray();
}
 
// This method is called when a cell value is edited by the user.
public Component getTableCellEditorComponent(JTable table, 
Object value, boolean isSelected, int row,int column) 
{ 
mlist.setListData((Object[])value);
return mlist;
}
 
}
 
class MyCellRenderer extends JList implements TableCellRenderer 
{
public MyCellRenderer(){
super();
}
public Component getTableCellRendererComponent(JTable mtable, Object value,
boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
 
if(isSelected)
setBackground(mtable.getSelectionBackground() );
else
setBackground(Color.white );
String stmp;
StringTokenizer st;
int rowHight=mtable.getRowHeight() +mtable.getRowMargin()+1;
int fold;
 
String[] mlist = (String[]) value;
 
 
fold = mlist.length ;
 
//adjust row height
if(mtable.getRowHeight(rowIndex)!=fold*rowHight) //otherwise, the save dialog couldn't show normally 
mtable.setRowHeight(rowIndex, fold*rowHight); 
setListData((String[])value);
 
return this;
} 
}
public static void main(String[] args)
{
jtablejlist jj =new jtablejlist();
jj.init();
}
 
}