У меня есть таблица на Java SWT.У меня есть столбец «оплачено», и на всех элементах написано «не оплачено» и значок не оплачено.Это четвертый столбец таблицы.
Я заполнил таблицу фиктивным контентом. Теперь я хочу добавить прослушиватель для ячеек четвертого столбца «оплачено», чтобы изменить содержимое выбранной ячейки.Если в ячейке есть неоплаченный текст и значок, он должен измениться на оплаченный текст и значок, и наоборот.
Я не могу найти способ добиться этого, потому что не могу добавить прослушиватель выбора дляячейка таблицы, или я не знаю, как это сделать.
Это мой исходный код:
Table membersTable = new Table(clubComposite, SWT.BORDER | SWT.CHECK | SWT.FULL_SELECTION);
membersTable.setLinesVisible(true);
membersTable.setHeaderVisible(true);
membersTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
TableColumn tblclmnName = new TableColumn(membersTable, SWT.NONE);
tblclmnName.setWidth(150);
tblclmnName.setText("Nombre");
TableColumn tblclmnCommonPhoneNumber = new TableColumn(membersTable, SWT.NONE);
tblclmnCommonPhoneNumber.setWidth(120);
tblclmnCommonPhoneNumber.setText("Teléfono");
TableColumn tblclmnCommonMoney = new TableColumn(membersTable, SWT.NONE);
tblclmnCommonMoney.setWidth(150);
tblclmnCommonMoney.setText("Participación Habitual");
TableColumn tblclmnPayed = new TableColumn(membersTable, SWT.CENTER);
tblclmnPayed.setWidth(50);
tblclmnPayed.setText("Payed");
// populate Table
for (int i=0; i<50; i++) {
TableItem tableItem = new TableItem(membersTable, SWT.CENTER);
tableItem.setText(new String[] {"person "+i, "610610620", "100", "non payed"});
tableItem.setImage(3, uncheckedImage);
}
РЕДАКТИРОВАТЬ:
ОК, мне удалосьсделать это с помощью флажка, но теперь, как я могу узнать, в какой строке щелкнул флажок?Мне нужно, чтобы получить значение третьего столбца
// populate Table
for (int i=0; i<50; i++) {
TableItem tableItem = new TableItem(membersTable, SWT.NONE);
tableItem.setText(new String[] {"person "+i, "610610620", "100"});
Button button = new Button(membersTable, SWT.CHECK);
button.pack();
TableEditor editor = new TableEditor(membersTable);
editor.minimumWidth = button.getSize().x;
editor.horizontalAlignment = SWT.CENTER;
editor.setEditor(button, tableItem, 3);
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
//how to know in which row is clicked the checkbox?
}
});
}