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:

 

Partagez cet article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *