在swt 加入一个table,可以增加和删除TABLE行,第一行是两个输入框,第二行是两个按钮,完整代码和注释
时间: 2023-08-31 17:11:15 浏览: 181
swt学习心得
下面是 SWT 中添加 Table 并实现增加和删除行的完整示例代码,包括注释说明:
```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 TableExample {
private Table table;
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout());
// 创建 Table
TableExample example = new TableExample();
example.createTable(shell);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
/**
* 创建 Table
*/
private void createTable(Composite parent) {
// 创建 Table
table = new Table(parent, SWT.BORDER | SWT.FULL_SELECTION);
table.setHeaderVisible(true);
table.setLinesVisible(true);
table.setLayoutData(new GridData(GridData.FILL_BOTH));
// 创建 Table 列
TableColumn column1 = new TableColumn(table, SWT.NONE);
column1.setText("姓名");
column1.setWidth(100);
TableColumn column2 = new TableColumn(table, SWT.NONE);
column2.setText("性别");
column2.setWidth(100);
// 创建 Table 行
TableItem item = new TableItem(table, SWT.NONE);
item.setText(new String[]{"张三", "男"});
// 创建第一行:两个输入框
Composite addComposite = new Composite(parent, SWT.NONE);
addComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
addComposite.setLayout(new GridLayout(3, false));
Label nameLabel = new Label(addComposite, SWT.NONE);
nameLabel.setText("姓名:");
final Text nameText = new Text(addComposite, SWT.BORDER);
nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label genderLabel = new Label(addComposite, SWT.NONE);
genderLabel.setText("性别:");
final Text genderText = new Text(addComposite, SWT.BORDER);
genderText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// 创建第二行:两个按钮
Composite buttonComposite = new Composite(parent, SWT.NONE);
buttonComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
buttonComposite.setLayout(new GridLayout(2, false));
Button addButton = new Button(buttonComposite, SWT.NONE);
addButton.setText("增加");
addButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
addTableRow(nameText.getText(), genderText.getText());
}
});
Button deleteButton = new Button(buttonComposite, SWT.NONE);
deleteButton.setText("删除");
deleteButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
deleteTableRow();
}
});
}
/**
* 增加 Table 行
*/
private void addTableRow(String name, String gender) {
TableItem item = new TableItem(table, SWT.NONE);
item.setText(new String[]{name, gender});
}
/**
* 删除 Table 行
*/
private void deleteTableRow() {
TableItem[] selection = table.getSelection();
if (selection.length > 0) {
table.remove(table.getSelectionIndices());
}
}
}
```
代码中首先创建了一个 Table,然后设置了表头和表格线的可见性,以及布局方式。接着创建了 Table 的列和行,并且添加了一个“增加”和“删除”按钮。其中“增加”按钮会调用 `addTableRow` 方法,将姓名和性别添加到 Table 中;“删除”按钮会调用 `deleteTableRow` 方法,删除选中的行。在 `addTableRow` 方法中,创建了一个新的 TableItem,并将姓名和性别添加到该项中,最后将该项添加到 Table 中。在 `deleteTableRow` 方法中,首先获取当前选中的行,然后删除这些行。
阅读全文