在我的SWT-GUI中,我有一个Table
有3列,行将从串口事件收到的数据中更新。
btnFetchRow.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if(myCommNew.serialDataExist()) {
try {
final TableItem newRow = new TableItem(table, SWT.NONE);
while(tblIndex<myCommNew.getSerialDataRecvd().size()) {
System.out.println("tblIndex Value:" + tblIndex);
System.out.println("Recvd Data Value:" + myCommNew.getSerialDataRecvd());
newRow.setText(0, Integer.toString(tblIndex));
newRow.setText(1, getCurrentTime());
newRow.setText(2,myCommNew.getSerialDataRecvd().get(tblIndex));
System.out.println("The Value Recvd is :" + myCommNew.getSerialDataRecvd().get(tblIndex));
tblIndex++;
}
} catch (Exception excWhile) {
System.out.println("Error in creating row");
System.err.println(excWhile.toString());
excWhile.printStackTrace();
}
一切正常,如果ArrayList
中只有一个数据(getSerialDataRecvd)但是ArrayList
中有多个数据,那么Table
中只会更新最后一个值(最近值) }。
答案 0 :(得分:0)
那是因为你只创建了一个新的TableItem
。您需要为ArrayList
中的每个元素创建一个:
for(int i = 0; i < myCommNew.getSerialDataRecvd().size(); i++)
{
TableItem newRow = new TableItem(table, SWT.NONE);
newRow.setText(0, Integer.toString(i));
newRow.setText(1, getCurrentTime());
newRow.setText(2, myCommNew.getSerialDataRecvd().get(i));
}