J'ai une table avec une colonne comme JButton.comment supprimer Jbutton de la table
i mis le moteur de rendu comme suit
TableColumn col = colModel.getColumn(3);
col.setCellRenderer(new MyRenderer("Del"));
col.setCellEditor(new MultiTradeCellEditor(new JCheckBox()));
Les classes renderer et cellEditor sont
class MyRenderer extends JButton implements TableCellRenderer{
public MyRenderer(String text){
super(text);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return this;
}
}
}
classe CellEditor
class MultiTradeCellEditor extends DefaultCellEditor{
protected JButton button;
public MultiTradeCellEditor(JCheckBox checkBox) {
super(checkBox);
button = new JButton("Del");
button.setOpaque(true);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
selectionList.getList().remove(table.getSelectedRow());
table.repaint();
}
});
}
}
Quand je supprimer la ligne de la table. Je fais model.remove (table.getSelectedRow()). Il supprime la ligne sauf le JButton. Je suppose que ce bouton fait partie d'un composant Renderer donc il n'est pas supprimé. Comment puis-je faire cela?
Oui, mais mettez en cache une référence à JButton et JLabel et renvoyez la même à chaque fois au lieu d'en allouer une nouvelle. –
@Devon - Je suis paresseux lors du codage sans IDE :) – willcodejavaforfood