JComboBox dans une JXtable

testeurforme Messages postés 3 Statut Membre -  
testeurforme Messages postés 3 Statut Membre -
Bonjour

Novice en la matière j'espère trouver une âme charitable qui pourrait m'orienter (la réponse est aussi bien venue :) ) pour le problème suivant :
Je voudrais pouvoir inserer des JCombobox dans les cellules d'une colonne d'une JXTable. Ces combos contienent une liste qui varie en fonction de la valeur d'une autre cellule (de la même ligne).
Exemple : la cellule (0,0) contient le nom d'une ville X et la cellule (0,1) contient une combo contenant la liste des arrondissement de la ville X

si quelqu'un à la gentillesse de m'accorder quelques minutes ...
Merci d'avance

1 réponse

testeurforme Messages postés 3 Statut Membre 2
 
en cherchant (oui oui je sais j'aurai du faire ca avant de poster :$) j'ai trouvé (enfin je crois:p) la solution à mon problème : (toute remarque est bien sur le bienvenue...)

il faut définir un TableCelleEditor et un TableCellRenderer :

public class MyDefaultTableCellRenderer extends DefaultTableRenderer {
        JComboBox combo;

        public MyDefaultTableCellRenderer() {
            super();
            combo = new JComboBox(new ComboBoxListModel());
            combo.setRenderer(new ComboBoxMapRenderer());
        }

        public Component getTableCellRendererComponent(JTable jTable, Object object, boolean b, boolean b1, int  row, int col) {
            return combo;
        }
    }


 public class MyDefaultTableCellEditor extends AbstractCellEditor implements TableCellEditor {
        JComboBox combo;

        public MyDefaultTableCellEditor() {
            super();
            combo = new JComboBox(new ComboBoxListModel());
            combo.setRenderer(new ComboBoxMapRenderer());

        }

        public Object getCellEditorValue() {
            return combo.getSelectedItem();
        }

       public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {

            //recuperation de la ville contenu dans la ligne de mon tableau
            Ville ville =   ((ListTableModel) table.getModel()).getRow(row);           

             ((ComboBoxListModel) combo.getModel()).setList(  ctrl.getModel().getLstAllFonction());
              updateLstRoleItems(combo);            
            return combo;
        }
    }
0