按钮事件后更新表值

时间:2015-07-07 12:40:54

标签: java swt

在我的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中只会更新最后一个值(最近值) }。

1 个答案:

答案 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));
}