Question

Je veux ajouter combobox dans une cellule de JTable.

model=new DefaultTableModel(data,col);
JTableHeader head=new JTableHeader();
head.setBackground(Color.BLUE);
table=new JTable(model);
table.add(head);
JComboBox combo = new JComboBox();
combo.addItem("Names");
combo.addItem("Antony");
combo.addItem("Victor");
combo.addItem("Ramkumar");
table.add(combo);

Mais je ne peux pas obtenir le combobox dans la cellule. Est-il possible de définir zone de liste déroulante?

Était-ce utile?

La solution

Vous devez définir le TableCellEditor du JTable. Il est préférable de rechercher les Java Tutoriels, mais voici une courte explication.

JTable utilise trois grandes classes au travail:

1) TableModel: sa fonction est-à-dire le nombre de lignes et de colonnes de la table a et à servir les données de la table, il est des méthodes principales sont getValue (ligne, colonne) et setValue (valeur, ligne, colonne). Et les incendies de notifier les JTable repaints.

2) TableCellRenderer: son but principal il est de tirer les composants dans les cellules du JTable. Ces composants ne sont peints: NE FONCTIONNE PAS! si vous dessinez un JComboBox il ne sera pas desplegate si vous cliquez dessus ou si vous dessinez un JCheckBox il wont't sélectionner / désélectionner.

3) TableCellEditor: son but principal il est de dessiner un composant dans un JTableCell pour modifier la valeur de la cellule. Il reçoit des événements et de décider quand commencer le montage, il est la méthode getTableCellEditorComponent est appelée à retourner le composant éditeur. Le composant retourné doit lancer des événements afin que le TableCellEditor sait quand arrêter le montage et obtenir la valeur et l'utiliser pour appeler le TableModel.setvalue ... ou annuler l'édition.

Alors que pour montrer JComboBox dans un JTable vous devez créer votre propre TableCellEditor, pas une tâche facile si vous ne l'avez pas fait avant.

Autres conseils

Prenez alook à ce Java tutoriel et la recherche sur cette page pour « Utilisation une zone de liste déroulante en tant qu'éditeur "

Essayez ceci:. Son travail pour me..click sur la cellule pour voir le combobox

 private void comboloader() {
        try {
            TableColumn gradeColumn = jTable1.getColumnModel().getColumn(0);
            JComboBox comboBox = new JComboBox();

            comboBox.removeAllItems();

            try {
                comboBox.addItem("Item 1");
                comboBox.addItem("Item 2");
                comboBox.addItem("Item 3");

            } catch (NullPointerException e) {
            } catch (Exception e) {
                e.printStackTrace();
            }
            gradeColumn.setCellEditor(new DefaultCellEditor(comboBox));
        } catch (Exception e) {
        }
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top