El DefaultCellEditor
L'utilisation ici est plus un hack pour utiliser les boutons car il accepte seulement JCheckBox
, JComboBox
y JTextField
.
Si vous voulez vraiment mettre en œuvre pour JButton
vous pouvez aussi faire comme ça,
class ButtonEditor extends AbstractCellEditor
implements javax.swing.table.TableCellEditor,
javax.swing.tree.TreeCellEditor
Sinon vous pouvez mettre à jour votre implémentation pour utiliser un constructeur avec JButton
comme paramètre ou constructeur par défaut,
Approche 1
public ButtonEditor() {
super(new JCheckBox());
button = new JButton();
button.setOpaque(true);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fireEditingStopped();
}
});
}
et peut être consulté comme,
table.getColumn("Button").setCellEditor(
new ButtonEditor());
Approche 2
public ButtonEditor(JButton button) {
super(new JCheckBox());
this.button = button;
button.setOpaque(true);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fireEditingStopped();
}
});
}
Cette approche offre une meilleure clarté et une meilleure utilisation du composant bouton en dehors de l'éditeur de cellules également,
JButton button=new JButton();
table.getColumn("Button").setCellEditor(
new ButtonEditor(button));