Insérer un JComboBox dans une celulle de JTable
JTable est un composant Swing flexible qui est très bien adapté pour afficher des données dans un format tabulaire. Dans ce tutoriel nous allons découvrir comment ajouter un JComboBox dans une celulle de JTable. Un JComboBox permet à l’utilisateur de choisir parmi plusieurs choix.
Exemple:
import javax.swing.*; import javax.swing.table.TableColumn; public class Main { public static void main(String args[]) { JFrame f = new JFrame(); f.setSize(450, 150); //Header de JTable String[] columns = new String[] { "Id", "Nom", "Adresse", "Taux horaire" }; //données pour JTable dans un tableau 2D Object[][] data = new Object[][] { {1, "Thomas", "Paris", 20.0 }, {2, "Jean", "Marseille", 50.0 }, {3, "Yohan", "Lyon", 30.0 }, {4, "Emily", "Toulouse", 60.0 }, {5, "Alex", "Nice", 10.0 }, }; //crée un JTable avec des données JTable table = new JTable(data, columns); // récupérer la 3éme colonne TableColumn col = table.getColumnModel().getColumn(2); // créer un ComboBox JComboBox<String> cb = new JComboBox<>(); cb.addItem("Paris"); cb.addItem("Lyon"); cb.addItem("Nice"); cb.addItem("Toulouse"); cb.addItem("Marseille"); cb.addItem("Lille"); //définir l'éditeur par défaut col.setCellEditor(new DefaultCellEditor(cb)); JScrollPane scroll = new JScrollPane(table); table.setFillsViewportHeight(true); //ajouter la table au frame f.getContentPane().add(scroll); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
Sortie: