[英]JTable CheckBox uneditable
我已經制作了AbstractTableModel
但是表格中的復選框不可編輯。 當我單擊它時,沒有任何改變,我在“完成”列中的復選框仍未選中。 我如何使其可檢查? 另外,當選中CheckBox時,我需要保存訂單號,但是我不知道該怎么做...
這是我桌子的照片
這是我的TableModel代碼:
public class KitchenTableModel extends AbstractTableModel {
private ArrayList<WrapperKitchen> hrana;
public KitchenTableModel(ArrayList<WrapperKitchen> hrana2) {
this.hrana = hrana2;
}
@Override
public int getColumnCount() {
return 8;
}
@Override
public int getRowCount() {
return hrana.size();
}
public String getColumnName(int columnIndex) {
switch (columnIndex) {
case 0:return "Order number";
case 1:return "Room";
case 2:return "Category";
case 3:return "Meal";
case 4:return "Quantity";
case 5:return "Note";
case 6:return "Order time";
case 7:return "Done";
}
return null;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
WrapperKitchen jelo = hrana.get(rowIndex);
switch (columnIndex) {
case 0:return jelo.getIdUslugaHrana();
case 1:return jelo.getBrojSobe();
case 2:return jelo.getNazivKategorija();
case 3:return jelo.getNazivHrane();
case 4:return jelo.getKolicina();
case 5:return jelo.getNapomena();
case 6:return jelo.getDatumVrijeme();
case 7:return jelo.getIzvrseno();
}
return null;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 7)
return Boolean.class;
return super.getColumnClass(columnIndex);
}
@Override
public boolean isCellEditable(int rowIndex, int colIndex) {
return (colIndex == 7);
}
}
AbstractTableModel
的setValueAt()
方法為空。 您的實現必須更新內部數據結構。
附錄: 我從未使用過表格。
在這個完整的示例中 ,表模型包含一個List<Boolean>
作為內部數據結構。
您必須在AbstractTableModel
重寫setValueAt()
,因為默認實現為空。
一個例子:
@Override
public void setValueAt(Object inValue, int inRow, int inCol) {
if(inRow < 0 || inCol < 0 || inRow >= getRowCount() )
return;
WrapperKitchen jelo= hrana.get(inRow);
switch (inCol) {
case 0:jelo.setIdUslugaHrana((properCast)inValue);break;
case 1:jelo.setBrojSobe((properCast)inValue);break;
case 2:jelo.setNazivKategorija((properCast)inValue);break;
case 3:jelo.setNazivHrane((properCast)inValue);break;
case 4:jelo.setKolicina((properCast)inValue);break;
case 5:jelo.setNapomena((properCast)inValue);break;
case 6:jelo.setDatumVrijeme((properCast)inValue);break;
case 7:jelo.setIzvrseno((properCast)inValue);break;
default: throw new RuntimeException("something bad happen incorrect column " + inCol);
}
}
fireTableCellUpdated(inRow, inCol);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.