bonjour,
j'ai remplie ma table Jtable d'apres la base de données et je veux ajouter des buttons pour faire les CRUD sur la ligne selectionné .
j'ai utilise DefaultTableMode pour remplire la table comme ceci :
et ça marche bien et pour l'ajout des button dans une cellule j'ai utilisé JtableModel comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Object [] tete={"Number","Name","Telephone","Adress"}; Object [][]données={}; DefaultTableModel tabmodel =new DefaultTableModel(données, tete); ....... List<Entreprise>lE=E.findAll(); for(int i=0;i<lE.size();i++) { System.out.println(lE.get(i).getIdEntreprise()); tabmodel.addRow(new Object[] {lE.get(i).getNumEntreprise(),lE.get(i).getNomEntreprise(),lE.get(i).getTelephoneEntreprise(),lE.get(i).getAdresseEntreprise()}); } JtableModel jtab=new JtableModel(); jTable2.setModel(tabmodel);et sans oublier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public class JtableModel extends AbstractTableModel { private static final long serialVersionUID = 1L; private static final String[] COLUMN_NAMES = new String[] {"Update","delete"}; @Override public Object getValueAt(final int rowIndex, final int columnIndex) { Icon cup = new ImageIcon("desktopapplication1.resources/add.png"); String columnName=getColumnName(columnIndex); if (columnName.equalsIgnoreCase("Update")) { //case 0: return rowIndex; //case 1: return "Text for "+rowIndex; final JButton button1 = new JButton("Update", cup); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(button1), "Button clicked for row "+rowIndex); } }); return button1;} else if(columnName.equalsIgnoreCase("Delete")){ final JButton button = new JButton("Delete"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(button), "Button clicked for row "+rowIndex); } }); return button; } return null; } }le probleme c'est que je trouve pas la solution de combiner les deux methodes ,""
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TableCellRenderer buttonRenderer = new JTableButtonRenderer(); jTable2.getColumn("Update").setCellRenderer(buttonRenderer); jTable2.getColumn("Delete").setCellRenderer(buttonRenderer); jTable2.addMouseListener(new JTableButtonMouseListener(jTable2))
Si quelqu'un a une methode ou idée priere de l'indiqué .
Cordialement .
Partager