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: