swt table增加和删除行,第一列为ccombo控件,第二列为String,完整代码
时间: 2023-07-15 12:14:37 浏览: 123
以下是一个 SWT Table 增加和删除行的示例代码,其中第一列为一个 CCombo 控件,第二列为一个字符串:
```java
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
public class TableDemo {
private Shell shell;
private Table table;
private int rowCount = 0;
public static void main(String[] args) {
Display display = new Display();
TableDemo demo = new TableDemo();
demo.open(display);
display.dispose();
}
private void open(Display display) {
shell = new Shell(display);
shell.setText("SWT Table Demo");
shell.setLayout(new GridLayout(2, false));
table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);
table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
table.setHeaderVisible(true);
table.setLinesVisible(true);
TableColumn column1 = new TableColumn(table, SWT.NONE);
column1.setText("Column 1");
column1.setWidth(100);
TableColumn column2 = new TableColumn(table, SWT.NONE);
column2.setText("Column 2");
column2.setWidth(100);
final TableItem item1 = new TableItem(table, SWT.NONE);
final CCombo ccombo = new CCombo(table, SWT.READ_ONLY);
ccombo.add("Option 1");
ccombo.add("Option 2");
ccombo.add("Option 3");
ccombo.select(0);
item1.setText(0, "");
item1.setControl(0, ccombo);
item1.setText(1, "Row " + (++rowCount));
Button addButton = new Button(shell, SWT.PUSH);
addButton.setText("Add Row");
addButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TableItem item = new TableItem(table, SWT.NONE);
final CCombo ccombo = new CCombo(table, SWT.READ_ONLY);
ccombo.add("Option 1");
ccombo.add("Option 2");
ccombo.add("Option 3");
ccombo.select(0);
item.setText(0, "");
item.setControl(0, ccombo);
item.setText(1, "Row " + (++rowCount));
}
});
Button deleteButton = new Button(shell, SWT.PUSH);
deleteButton.setText("Delete Row");
deleteButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
int index = table.getSelectionIndex();
if (index != -1) {
table.remove(index);
}
}
});
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}
```
在这个示例中,我们首先创建了一个带有两个列的 SWT Table,并在第一行的第一列中放置了一个 CCombo 控件。我们还创建了两个按钮,一个用于添加新行,另一个用于删除选定的行。
添加行时,我们创建一个新的 TableItem,然后向第一列添加一个新的 CCombo 控件,并将其添加到 TableItem 上。我们还设置了第二列的文本,以便显示新行的行号。
删除行时,我们首先获取当前选定的行的索引,然后使用 `Table.remove()` 方法将其从表中删除。
阅读全文