swt table增加和删除行,第一列为ccombo控件,第二列为String,完整代码注释
时间: 2023-07-15 14:14:27 浏览: 96
以下是一个 SWT Table 控件的示例代码,其中包含添加和删除行的功能,第一列为 Combo 控件,第二列为 String 类型的数据。
```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 Table table;
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Table Demo");
shell.setLayout(new GridLayout(1, false));
TableDemo tableDemo = new TableDemo(shell);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public TableDemo(Composite parent) {
table = new Table(parent, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
table.setLinesVisible(true);
table.setHeaderVisible(true);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
gridData.heightHint = 200;
table.setLayoutData(gridData);
TableColumn column1 = new TableColumn(table, SWT.NONE);
column1.setText("Combo");
column1.setWidth(100);
TableColumn column2 = new TableColumn(table, SWT.NONE);
column2.setText("String");
column2.setWidth(100);
// 添加按钮
Button addButton = new Button(parent, SWT.NONE);
addButton.setText("Add");
addButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent selectionEvent) {
TableItem item = new TableItem(table, SWT.NONE);
Combo combo = new Combo(table, SWT.READ_ONLY);
combo.add("Option 1");
combo.add("Option 2");
combo.add("Option 3");
item.setText(0, "");
item.setText(1, "");
table.getColumn(0).setWidth(100);
table.getColumn(1).setWidth(100);
table.showColumn(table.getColumn(0));
table.showColumn(table.getColumn(1));
table.redraw();
combo.pack();
Rectangle rect = item.getBounds(0);
combo.setBounds(rect.x + 2, rect.y + 2, rect.width - 4, rect.height - 4);
combo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent selectionEvent) {
item.setText(0, combo.getText());
}
});
combo.setFocus();
}
});
// 删除按钮
Button deleteButton = new Button(parent, SWT.NONE);
deleteButton.setText("Delete");
deleteButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent selectionEvent) {
int[] selectedIndices = table.getSelectionIndices();
table.remove(selectedIndices);
}
});
}
}
```
上述代码中,我们创建了一个 Table 控件,并添加了两列数据:第一列为 Combo 控件,第二列为 String 类型的数据。同时,我们添加了两个按钮,一个用于添加行,另一个用于删除选定的行。
添加行的过程中,我们首先创建一个 TableItem 对象,然后创建一个 Combo 控件,并将其添加到 TableItem 中。接着,我们使用 pack() 方法对 Combo 控件进行布局,计算出其最佳大小,并将其放置在正确的位置。最后,我们将 Combo 控件的选中项设置为 TableItem 的第一列数据,并添加一个选中事件监听器,以便在用户选择不同的选项时更新 TableItem 的数据。
删除行的过程比较简单,我们首先获取用户选择的行,然后使用 remove() 方法将这些行从 Table 控件中删除。
阅读全文