Comment ajouter des lignes dynamiquement dans un JTable

JTable est un composant Swing flexible, est une sous-classe de la classe JComponent et elle peut être utilisée pour créer une table avec des informations affichées dans plusieurs lignes et colonnes. Nous pouvons ajouter des lignes dynamiquement dans un JTable lors d’un événement de clic sur le bouton « + Add ».

Pour ajouter des lignes dynamiquement dans un JTable, nous avons utiliser la méthode addRow().
 


 
 

Exemple:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.table.*;

public class DynamicTable 
{	
    //TextField
    private JTextField text1, text2, text3, text4;
	
    // Header de JTable 
    public static final String[] columns = {
        "Nom", "Age", "Adresse"
    };
    // Créer le modèle de table
    private DefaultTableModel model = new DefaultTableModel(columns, 0);
    // Créer la table
    private JTable table = new JTable(model);
    // Créer le panneau principale
    private JPanel mainPanel = new JPanel(new BorderLayout());

    public DynamicTable() 
    {
        //Bouton Add
        JButton addButton = new JButton("+ Add");
        //Bouton Clear
        JButton clearButton = new JButton("Clear");
        //Panneau des boutons
        JPanel buttonPanel = new JPanel();
        //Ajouter les boutons au panneau
        buttonPanel.add(addButton);
        buttonPanel.add(clearButton);
		
        // Ce code est appelé lorsque le bouton Add est cliqué.
        addButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            	//Ajouter les données du formulaire
            	model.addRow(
            	     new Object[]{
            	           text1.getText(), 
            	           text2.getText(),
            	           text3.getText()
            	     }
            	);
            }
        });
		
        // Ce code est appelé lorsque le bouton Clear est cliqué.
        clearButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            	//Effacer le formulaire
            	text1.setText("");
            	text2.setText("");
            	text3.setText("");
            }
        });
		
        //Créer le panneau de JTextFields
        JPanel textPanel = new JPanel(new BorderLayout());
        text1 = new JTextField();
        text2 = new JTextField();
        text3 = new JTextField();
        //Ajouter les JTextFields au panneau
        textPanel.add(text1, BorderLayout.NORTH);
        textPanel.add(text2, BorderLayout.CENTER);
        textPanel.add(text3, BorderLayout.SOUTH);
	
        //Ajouter les panneaus et la table au panneau principale
        mainPanel.add(textPanel, BorderLayout.NORTH);
        mainPanel.add(new JScrollPane(table), BorderLayout.CENTER);
        mainPanel.add(buttonPanel, BorderLayout.SOUTH);
    }

    //Récupérer le panneau principale
    public JComponent getComponent() {
        return mainPanel;
    }
    // démarrer mon application en thread-safe
    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame("Ajout automatique dans JTable");
                f.getContentPane()
                 .add(new DynamicTable().getComponent());
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(340,250);
                f.setLocationRelativeTo(null);
                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 *