Tôi có một mã như dưới đây. Tôi muốn xóa ô bằng cách nhấn phím xóa. Làm thế nào tôi có thể làm điều đó? Và tôi cũng muốn thêm nút xóa trong trường đó.Làm thế nào để xóa một ô từ jTable bằng cách nhấn phím DELETE?
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);
}
Có thể với mã này không? Cảm ơn bạn.
trừ 1 cho lỗi xóa/biên dịch phi chức năng tại 'setValueAt' – BullyWiiPlaza
@BullyWiiPlaza Sau đó, tôi đoán bạn là người duy nhất. lỗi gì bạn nhận được? Tôi sử dụng mã chính xác này trong nhiều hệ thống sản xuất, vì vậy bất kỳ vấn đề nào bạn đang gặp phải phải đối mặt với cách bạn đang sử dụng nó – MadProgrammer
@BullyWiiPlaza Vì vậy, về cơ bản bạn đang nói "Tôi gặp lỗi nên đó phải là lỗi của mọi người! " Bạn không thể tìm thấy bất kỳ câu trả lời nào đáp ứng trực tiếp các yêu cầu của bạn một cách chính xác và câu trả lời được cung cấp là ngữ cảnh cho câu hỏi được hỏi. Tuy nhiên, tôi sử dụng loại chức năng này mọi lúc, thông thường để xóa các hàng – MadProgrammer