Swing中的JTable中添加Checkbox不能选中
JTable中的一列我渲染成了CheckBox,但是当鼠标点击后,不能显示出选中的状态。请高手帮忙解决一下啊。在线等!
JTable的model:
class EntitySynchroTableModel extends AbstractTableModel{
private List<Boolean> checkBoxValues = new ArrayList<Boolean>();
private List<ComparisonResultVO> datas;
private List<ComparisonResultVO> selectdatas;
public EntitySynchroTableModel(){
datas = new ArrayList<ComparisonResultVO>();
selectdatas = new ArrayList<ComparisonResultVO>();
}
public int getRowCount() {
return datas == null ? 0 : datas.size();
}
public int getColumnCount() {
return columns == null ? 0 : columns.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
if(null==datas || rowIndex>datas.size()-1)
return null;
ComparisonResultVO tempVO = datas.get(rowIndex);
if(getColumnName(columnIndex).equals(CHOOSE)){
return this.checkBoxValues.get(rowIndex);
}
if(getColumnName(columnIndex).equals(CURNET_RESOURCE)){
return tempVO.getLocalEntity();
}
if(getColumnName(columnIndex).equals(NOTE)){
return tempVO.getNote();
}
for(Map.Entry<LocalNetVO,RemoteEntityStatusVO> entity : tempVO.getRemoteEntityMap().entrySet()){
if(getColumnName(columnIndex).equals(entity.getKey().getFromNetlName())){
return entity.getValue();
}
}
return null;
}
public Class<?> getColumnClass(int columnIndex){
if(getColumnName(columnIndex).equals(CHOOSE)){
return Boolean.class;
}
if(getColumnName(columnIndex).equals(CURNET_RESOURCE))
return BaseVO.class;
for(LocalNetVO vo : localNetVOs){
if(getColumnName(columnIndex).equals(vo.getFromNetlName()))
return RemoteEntityStatusVO.class;
}
if(getColumnName(columnIndex).equals(NOTE)){
return String.class;
}
return null;
}
public String getColumnName(int column){
return columns == null ? "" : columns[column];
}
public void clear(){
if(null != datas){
datas.clear();
fireTableDataChanged();
}
}
public void setData(List<ComparisonResultVO> datas){
this.datas = datas;
this.checkBoxValues.clear();
for(ComparisonResultVO result : datas){
this.checkBoxValues.add(false);
}
fireTableDataChanged();
}
public void removeRow(int rowIndex){
if(null != datas){
datas.remove(rowIndex);
fireTableDataChanged();
}
}
public int getColumnIndexByName(String columnName){