Ho un codice come sotto. Voglio cancellare la cella premendo un tasto di cancellazione. Come lo posso fare? E voglio anche aggiungere il pulsante Elimina in quel campo.Come eliminare una cella da jTable premendo il tasto CANC?
private static final long serialVersionUID = -250883760398754970L;
private final LinkedList<Product> list= new LinkedList<Product>();
private final LinkedList<Boolean> checkList = new LinkedList<Boolean>();
public void addItem(Product customer) {
list.add(customer);
checkList.add(false);
fireTableDataChanged();
}
@Override
public int getColumnCount() {
return 6;
}
@Override
public int getRowCount() {
return list.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Object obj = null;
if(columnIndex==4)
{
setTotal(list.get(rowIndex));
}
switch (columnIndex){
case 0: obj= list.get(rowIndex).getCode() ;break;
case 1: obj=list.get(rowIndex).getDescription(); break;
case 2: obj=list.get(rowIndex).getQuantity();break;
case 3: obj=list.get(rowIndex).getPrice();break;
case 4: obj=list.get(rowIndex).getTotal();break;
}
return obj;
}
@Override
public Class<?> getColumnClass(int arg0) {
switch(arg0){
case 0: case 1: return String.class;
case 2: return Integer.class;
case 3: case 4: return Double.class;
}
return super.getColumnClass(arg0);
}
@Override
public boolean isCellEditable(int arg0, int arg1) {
boolean isCellEditable = false;
switch(arg1){
case 2: case 3: isCellEditable= true;break;
default: isCellEditable= false;break;
}
return isCellEditable;
//return super.isCellEditable(arg0, arg1);
}
@Override
public void setValueAt(Object arg0, int arg1, int arg2) {
System.out.println("Value seted" +arg0 + arg1 + arg2);
switch(arg2){
case 0: break;
case 1: break;
case 2: list.get(arg1).setQuantity((Integer)arg0); setTotal(list.get(arg1)); break;
case 3: list.get(arg1).setPrice((Double)arg0); setTotal(list.get(arg1));break;
case 4: list.get(arg1).setTotal((Double)arg0);break;
//case 0: checkList.set(arg1, (Boolean)arg0);break;
default:break;
}
//list.get(arg1).setTotal((Double)arg0);
fireTableDataChanged();
}
public LinkedList<Product> getList() {
LinkedList<Product> temp = new LinkedList<Product>();
int index=-1;
for(Boolean isSelected:checkList){
index++;
if(isSelected){
temp.add(list.get(index));
}
}
return temp;
}
public void setTotal(Product product){
Double total = 0.0d;
total = product.getQuantity()* product.getPrice();
product.setTotal(total);
}
E 'possibile con questo codice? Grazie.
meno 1 per la cancellazione errori non funzionale/compilatore a 'setValueAt' – BullyWiiPlaza
@BullyWiiPlaza Poi credo che tu sei l'unico. Che errore stai ottenendo? Io uso questo codice esatto in molti sistemi di produzione, quindi qualsiasi problema tu debba avere con il modo in cui lo stai usando – MadProgrammer
@BullyWiiPlaza Quindi, stai praticamente dicendo "Ho ricevuto un errore, quindi deve essere colpa di tutti! " È improbabile che tu trovi una risposta che soddisfi esattamente le tue esigenze esattamente e che la risposta fornita sia contestuale alla domanda posta. Tuttavia, utilizzo sempre questo tipo di funzionalità, normalmente per eliminare le righe – MadProgrammer