package vue; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; public class ButtonEditor extends DefaultCellEditor { private static final long serialVersionUID = 1L; protected JButton button; private ButtonListener bListener = new ButtonListener(); public ButtonEditor(JCheckBox checkBox) { super(checkBox); button = new JButton(); button.setOpaque(true); button.addActionListener(bListener); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { bListener.setRow(row); bListener.setColumn(column); bListener.setTable(table); button.setText( (value ==null) ? "" : value.toString() ); return button; } class ButtonListener implements ActionListener{ private int column, row; private JTable table; private int nbre = 0; private JButton button; public void setColumn(int col){this.column = col;} public void setRow(int row){this.row = row;} public void setTable(JTable table){this.table = table;} public JButton getButton(){return this.button;} public void actionPerformed(ActionEvent event) { System.out.println("coucou du bouton : " + ((JButton)event.getSource()).getText() ); ((AbstractTableModel)table.getModel()).setValueAt("New Value " + (++nbre), this.row, (this.column -1)); ((AbstractTableModel)table.getModel()).fireTableCellUpdated(this.row, this.column - 1); this.button = ((JButton)event.getSource()); } } }