Mettre à jour une ligne dans 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 mettre à jour une ligne dans JTable lors d’un événement de clic sur le bouton « Update ».
Exemple:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.LineBorder; import javax.swing.table.*; import javax.swing.event.*; public class UpdateTable { //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 UpdateTable() { //Bouton Add JButton addButton = new JButton("+ Add"); //Bouton Update JButton updateButton = new JButton("Update"); //Panneau des boutons JPanel buttonPanel = new JPanel(); //Ajouter les boutons au panneau buttonPanel.add(addButton); buttonPanel.add(updateButton); // 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() } ); //Effacer le formulaire aprés l'ajout text1.setText(""); text2.setText(""); text3.setText(""); } }); // Récupérer la ligne sélectionnée de JTable dans JTextfields table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ @Override public void valueChanged(ListSelectionEvent e) { int i = table.getSelectedRow(); text1.setText((String)model.getValueAt(i, 0)); text2.setText((String)model.getValueAt(i, 1)); text3.setText((String)model.getValueAt(i, 2)); } }); // Ce code est appelé lorsque le bouton Update est cliqué. updateButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //Mettre à jour le formulaire int i = table.getSelectedRow(); model.setValueAt(text1.getText(), i, 0); model.setValueAt(text2.getText(), i, 1); model.setValueAt(text3.getText(), i, 2); } }); //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("Mettre à jour une ligne JTable"); f.getContentPane().add(new UpdateTable().getComponent()); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(340,250); f.setLocationRelativeTo(null); f.setVisible(true); } }); } }
Sortie: