1.各种各样的选中,以及代码设置选中以及得到选中行的VO
nc里面表格的选中分二种,一种是基于table 的,一种是基于billmodel的.
一基于table的 ,可以用来得到选中行,删除行,但不能用于得VO
1.列表表头选中
getBillListPanel().getHeadTable().getSelectionModel().setSelectionInterval(0,1);
2.列表表头选中
getBillListPanel().getBodyTable()().getSelectionModel().setSelectionInterval(0,1);
3.卡片表头选中
getBillCardPanel().getBillTable().getSelectionModel().setSelectionInterval(0,1);
4.设置选中样式
xx.getTable().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); ========================================================================================
2. 这是基本于BIllModel的,这种只有设置和可以多选以后才有意义,可以用来取行VO
1.列表表头设置为选中
getBillListPanel().getHeadBillModel().setRowState(0, BillModel.SELECTED);
2.列表表体设置为选中
getBillListPanel().getBodyBillModel().setRowState(0, BillModel.SELECTED);
3.卡片设置选中
getBillCardPanel().getBillModel()().setRowState(0, BillModel.SELECTED);
4.得到选择的VO数组
CircularlyAccessibleValueObject[] vos = getBillCardPanel().getBillModel().getBodySelectedVOs();
5.得到特定行的VO
CircularlyAccessibleValueObject[] vos = getBillCardPanel().getBillModel().getBodyValueRowVO(int row, String bodyVOName);
3. 只有选中行可编辑的解决方法,当行可编辑
@Override
publicvoid bodyRowChange(BillEditEvent e) {
// 修改的时候不能选中其他行,如果选择,则自动跳回编辑行
int currow = getBillCardPanel().getBillTable().getSelectedRow();
int editRow = getBillCardPanel().getBillTable().getEditingRow();
if (getBillOperate() == IBillOperate.OP_EDIT && editRow >-1 && currow != editRow) {
getBillCardPanel().getBillTable().setRowSelectionInterval(editRow, editRow);
return;
}
}