Đọc nhận xét của Kleopatra (lần thứ 2 anh đề nghị xem javax.swing.JXTable và giờ tôi xin lỗi tôi không có lần đầu tiên :)) Tôi khuyên bạn nên theo liên kết
Tôi đã tìm kiếm một asnwer và tôi kết hợp một số câu trả lời cho giải pháp của riêng mình: (tuy nhiên, không an toàn cho tất cả các giải pháp, nhưng dễ hiểu và nhanh chóng) khuyên bạn nên xem liên kết ở trên)
Bạn có thể giữ cho nó linh hoạt hơn để đặt cột nào có thể chỉnh sửa được hay không sau này, tôi đã sử dụng điều này cho exmaple:
columnsEditable=new ArrayList<Integer>();
table=new JTable(new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int col) {
if(columnsEditable.isEmpty()){
return false;
}
if(columnsEditable.contains(new Integer(col))){
return true;
}
return false;
}
});
Và tôi đã sử dụng chức năng này để thiết lập có thể chỉnh sửa hay không:
public void setColumnEditable(int columnIndex,boolean editable){
if(editable){
if(!columnsEditable.contains(new Integer(columnIndex))){
columnsEditable.add(new Integer(columnIndex));
}
}else{
if(columnsEditable.contains(new Integer(columnIndex))){
columnsEditable.remove(new Integer(columnIndex));
}
}
}
Lưu ý: tất nhiên bạn phải xác định columnsEditable và JTable bảng toàn cầu trong lớp này:
private JTable table;
private ArrayList<Integer> columnsEditable;
Note 2 : theo mặc định tất cả các cột không thể chỉnh sửa được, nhưng đó là hành vi mong muốn của tôi. Nếu bạn whish otherwhise, hoặc thêm tất cả các cột vào cộtEditable hoặc thay đổi hành vi hoàn toàn (làm cho ArrayList cộtNonEditable thay). Về nhận xét của Kleopatra: tốt hơn là không sử dụng đề xuất cuối cùng này (nhưng nó phụ thuộc vào bảng mô hình được sử dụng và những gì bạn làm trong phần còn lại của chương trình).
Nguồn
2011-12-12 16:22:21
sai - a) không có phương pháp nào có thể chỉnh sửa ở bất kỳ đâu b) TableColumn không có khái niệm về khả năng chỉnh sửa ở tất cả c) TableCell không tồn tại. Chính xác sẽ là _isCellEditable_ hoặc trên thực hiện TableModel hoặc trên JTable - -1 cho sloppiness – kleopatra