JComboBox dans JTable avec Arraylist<object[]> comme model
lex1111
Messages postés220Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention26 octobre 2007
-
16 juil. 2007 à 10:45
lex1111
Messages postés220Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention26 octobre 2007
-
16 juil. 2007 à 19:46
Bonjour a tous, j'ais regardé presque tout les topics sur la façon de mettre une Colonne de ma Jtable avec des Jcombobox y compris les tutos de sun, mais aucune n'a fonctionnée...
Donc je fais appel a vous...
Voici le code pour mettre une jcombobox que j'utilise mais qui ne fonctionne pas :
(la Jcombobox ne s'affiche pas, seul le valeur 6 qui est définit dans mon arraylist s'affiche dans cette colonne).
package myPack;
import java.util.ArrayList;
import javax.swing.DefaultCellEditor;
import javax.swing.ImageIcon;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
public class frame_search_info extends javax.swing.JFrame {
public frame_search_info() {
...
//On initialize les données de la Arraylist<object[]>
initData();
//On initialise le model de la Jtable
initModel();
...
}
private void initData(int type){
ImageIcon myIconNext=new ImageIcon(System.getProperty("user.dir")+"/data/next.png");
for(int z=0;z<10;z++){
data_list.add(new Object[]{
myIconNext,
myIconNext,
"2",
"3",
"4",
"5",
"6"});
}
}
private void initModel(){
table_list.setModel(new SpecialTableModelObject(data_list, new String[] {
"0",
"1",
"2",
"3",
"4",
"5",
"comboColumn"}));
javax.swing.JComboBox myComboBox = new javax.swing.JComboBox();
myComboBox.addItem("choice1");
myComboBox.addItem("choice2");
myComboBox.addItem("choice3");
table_list.getColumnModel().getColumn(6).setCellEditor(new DefaultCellEditor(myComboBox));
}
private ArrayList<Object[]> data_list=new ArrayList<Object[]>();
....
private org.jdesktop.swingx.JXTable table_list;
// End of variables declaration
}
Et voici le code de ma SpecialTableModelObject
package myPack;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class SpecialTableModelObject extends AbstractTableModel {
private static final long serialVersionUID = 1;
private String[] columnNames;
private ArrayList<Object[]> data = new ArrayList<Object[]>();
public SpecialTableModelObject( ArrayList<Object[]> dat, String[] cols){
super();
columnNames = cols;
data = dat;
}
public SpecialTableModelObject( ArrayList<Object[]> dat){
super();
data = dat;
}
public void misajour( ArrayList<Object[]> dat){
data = dat;
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.size();
}
public void setColumn(String[] column){
columnNames = column;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
Object[] v = data.get(row);
return v[col];
}
public Class<?> getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return false;
}
public void setValueAt(String value, int row, int col) {
Object[] v = data.get(row);
v[col] = value;
fireTableCellUpdated(row, col);
}
}
Je vous remercie d'avance pour toute l'aide que vous pourrez m'apporter :D
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 16 juil. 2007 à 11:40
Tu redéfinis bien le cellEditor, mais pas le cellRenderer, du coup c'est normal qu'il ne t'affiche que le textfield classique, par contre, tu devrais voir le combo dès que ta cellule prend le focus.
Va voir ma source de property table : j'y ai fait un EnumRenderer et EnumEditor (il me semble que je les ai nommé comme cà) pour justement avoir une cellule sous forme de combo.
lex1111
Messages postés220Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention26 octobre 20071 16 juil. 2007 à 13:34
Bonjour, merci pour ta réponse j'ais essayé ce que tu m'as dis, mais ça ne fonctionne toujours pas : (j'ai bien un jcombobox qui s'affiche mais quand je click dessus, le jcombobox ne se déroule pas on à l'impression que c'est simplementu une image statique de jcombobox
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 16 juil. 2007 à 16:00
Il te faut implémenter un CellRenderer ET un CellEditor : comme leurs noms l'indique, le cellRenderer permet d'afficher la valeur de la cellule, alors que le CellEditor te permet de l'éditer.