package testagent; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; public class AgentTableModel extends AbstractTableModel { private List list; public AgentTableModel(List list) { this.list = new ArrayList<>(list); } @Override public Object getValueAt(int rowIndex, int columnIndex) { return getData(list.get(rowIndex), columnIndex); } public Object getData(Agent agent, int col) { switch (col) { case 0: { return agent.getNom() + " " + agent.getPrenoms(); } case 1: { return agent.getFonction(); } case 2: { return agent.getLogin(); } } return null; } @Override public String getColumnName(int column) { switch (column) { case 0: { return "Nom & Prénoms"; } case 1: { return "Fonction"; } case 2: { return "Login"; } } return ""; } @Override public int getRowCount() { return list.size(); // le nombre de lignes } @Override public int getColumnCount() { return 3; // le nombre de colonnes } public void addAgent(Agent agent) { int rowIndex=list.size(); list.add(agent); fireTableRowsInserted(rowIndex, rowIndex); } public void addAgents(List agents) { int rowIndex=list.size(); list.addAll(agents); fireTableRowsDeleted(rowIndex, rowIndex+agents.size()-1); } public void removeAgent(Agent agent) { int rowIndex=list.indexOf(agent); if ( rowIndex>=0 ) { list.remove(agent); fireTableRowsInserted(rowIndex, rowIndex); } } public void removeAgents(List agents) { int rowIndex=0; int firstIndex=rowIndex; while(rowIndexfirstIndex ) { for(int index=firstIndex; index=0 ) { fireTableCellUpdated(rowIndex, columnIndex); rowIndex=list.subList(rowIndex+1, list.size()).indexOf(agent); } } public Agent getAgent(int rowIndex) { return list.get(rowIndex); } public static void main(String[] args) { //DefaultTableColumnModel cm = new DefaultTableColumnModel(); //cm.addColumn(createTableColumn(0,"Nom agent")); List agents=new ArrayList<>(); agents.add(new Agent("A","a")); agents.add(new Agent("B","b")); agents.add(new Agent("C","c")); final AgentTableModel model=new AgentTableModel(agents); final JTable table = new JTable(model); JFrame frame=new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel=new JPanel(); frame.getContentPane().add(panel); panel.setLayout(new BorderLayout()); JPanel panel2=new JPanel(); panel2.setLayout(new BorderLayout()); panel2.add(table.getTableHeader(), BorderLayout.NORTH); panel2.add(new JScrollPane(table), BorderLayout.CENTER); panel.add(panel2, BorderLayout.CENTER); JPanel panel3=new JPanel(); panel.add(panel3, BorderLayout.SOUTH); panel3.setLayout(new FlowLayout()); final JButton button1 = new JButton("Test add"); button1.addActionListener(new ActionListener() { boolean performed=false; Agent agent = new Agent("D","d"); @Override public void actionPerformed(ActionEvent e) { if( performed ) { performed=false; model.removeAgent(agent); button1.setText("Test add"); } else { performed=true; model.addAgent(agent); button1.setText("Test remove"); } } }); panel3.add(button1); final JButton button2 = new JButton("Test add multiple"); button2.addActionListener(new ActionListener() { boolean performed=false; List agents=new ArrayList<>(); { agents.add(new Agent("E","e")); agents.add(new Agent("F","f")); agents.add(new Agent("G","g")); } @Override public void actionPerformed(ActionEvent e) { if( performed ) { performed=false; model.removeAgents(agents); button2.setText("Test remove multiple"); } else { performed=true; model.addAgents(agents); button2.setText("Test add multiple"); } } }); panel3.add(button2); frame.setSize(300,200); frame.setLocationRelativeTo(null); frame.setVisible(true); } }