代码如下:我输入编号,点击查询后,能从数据库中得到数据并显示成table。但第二次输入另一个编号,点查询时,table不会更新。
final Composite composite_3 = new Composite(tabFolder, SWT.NONE);
composite_3.setBackground(SWTResourceManager.getColor(192, 192, 192));
tabItem_5.setControl(composite_3); text = new Text(composite_3, SWT.BORDER);
text.setBounds(245, 118, 211, 37); final Label label_4 = new Label(composite_3, SWT.NONE);
label_4.setBackground(SWTResourceManager.getColor(192, 192, 192));
label_4.setFont(SWTResourceManager.getFont("", 11, SWT.NONE));
label_4.setAlignment(SWT.CENTER);
label_4.setText("请输入需要查询的志愿者编号:");
label_4.setBounds(22, 129, 217, 37); final Button button_3 = new Button(composite_3, SWT.NONE);
button_3.setFont(SWTResourceManager.getFont("", 11, SWT.NONE));
button_3.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
try {
String id=text.getText();
id= id.replaceAll(" ","");
if(id!=null &&id!=""){
DB db=new DB();
String name = db.getUserValue(id,"name");
String hours=db.getUserValue(id,"hours");
String gender=db.getUserValue(id,"gender");
String contacts=db.getUserValue(id,"contacts");
String college=db.getUserValue(id,"college");
table = new Table(composite_3, SWT.BORDER);
table.setLinesVisible(true);
table.setHeaderVisible(true);
table.setBounds(14, 202, 753, 166);
final TableColumn newColumnTableColumn = new TableColumn(table, SWT.CENTER);
newColumnTableColumn.setAlignment(SWT.CENTER);
newColumnTableColumn.setWidth(80);
newColumnTableColumn.setText("编号"); final TableColumn newColumnTableColumn_1 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_1.setAlignment(SWT.CENTER);
newColumnTableColumn_1.setWidth(130);
newColumnTableColumn_1.setText("姓名"); final TableColumn newColumnTableColumn_2 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_2.setAlignment(SWT.CENTER);
newColumnTableColumn_2.setWidth(129);
newColumnTableColumn_2.setText("服务时间(小时)"); final TableColumn newColumnTableColumn_3 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_3.setAlignment(SWT.CENTER);
newColumnTableColumn_3.setWidth(79);
newColumnTableColumn_3.setText("性别"); final TableColumn newColumnTableColumn_4 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_4.setAlignment(SWT.CENTER);
newColumnTableColumn_4.setWidth(146);
newColumnTableColumn_4.setText("联系方式"); final TableColumn newColumnTableColumn_5 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_5.setAlignment(SWT.CENTER);
newColumnTableColumn_5.setWidth(182);
newColumnTableColumn_5.setText("学院"); final TableItem tableItem = new TableItem(table, SWT.BORDER);
tableItem.setText(5, college==null?"无对应数据":college);
tableItem.setText(4, contacts==null?"无对应数据":contacts);
tableItem.setText(3, gender==null?"无对应数据":gender);
tableItem.setText(2, hours==null?"无对应数据":hours);
tableItem.setText(1, name==null?"无对应数据":name);
tableItem.setText(0,id);
}
else{
MessageDialog.openError(shell,"查询失败","请输入需要查询的志愿者编号");
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
button_3.setText("查询");
button_3.setBounds(470, 118, 120, 37);
final Composite composite_3 = new Composite(tabFolder, SWT.NONE);
composite_3.setBackground(SWTResourceManager.getColor(192, 192, 192));
tabItem_5.setControl(composite_3); text = new Text(composite_3, SWT.BORDER);
text.setBounds(245, 118, 211, 37); final Label label_4 = new Label(composite_3, SWT.NONE);
label_4.setBackground(SWTResourceManager.getColor(192, 192, 192));
label_4.setFont(SWTResourceManager.getFont("", 11, SWT.NONE));
label_4.setAlignment(SWT.CENTER);
label_4.setText("请输入需要查询的志愿者编号:");
label_4.setBounds(22, 129, 217, 37); final Button button_3 = new Button(composite_3, SWT.NONE);
button_3.setFont(SWTResourceManager.getFont("", 11, SWT.NONE));
button_3.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
try {
String id=text.getText();
id= id.replaceAll(" ","");
if(id!=null &&id!=""){
DB db=new DB();
String name = db.getUserValue(id,"name");
String hours=db.getUserValue(id,"hours");
String gender=db.getUserValue(id,"gender");
String contacts=db.getUserValue(id,"contacts");
String college=db.getUserValue(id,"college");
table = new Table(composite_3, SWT.BORDER);
table.setLinesVisible(true);
table.setHeaderVisible(true);
table.setBounds(14, 202, 753, 166);
final TableColumn newColumnTableColumn = new TableColumn(table, SWT.CENTER);
newColumnTableColumn.setAlignment(SWT.CENTER);
newColumnTableColumn.setWidth(80);
newColumnTableColumn.setText("编号"); final TableColumn newColumnTableColumn_1 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_1.setAlignment(SWT.CENTER);
newColumnTableColumn_1.setWidth(130);
newColumnTableColumn_1.setText("姓名"); final TableColumn newColumnTableColumn_2 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_2.setAlignment(SWT.CENTER);
newColumnTableColumn_2.setWidth(129);
newColumnTableColumn_2.setText("服务时间(小时)"); final TableColumn newColumnTableColumn_3 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_3.setAlignment(SWT.CENTER);
newColumnTableColumn_3.setWidth(79);
newColumnTableColumn_3.setText("性别"); final TableColumn newColumnTableColumn_4 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_4.setAlignment(SWT.CENTER);
newColumnTableColumn_4.setWidth(146);
newColumnTableColumn_4.setText("联系方式"); final TableColumn newColumnTableColumn_5 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_5.setAlignment(SWT.CENTER);
newColumnTableColumn_5.setWidth(182);
newColumnTableColumn_5.setText("学院"); final TableItem tableItem = new TableItem(table, SWT.BORDER);
tableItem.setText(5, college==null?"无对应数据":college);
tableItem.setText(4, contacts==null?"无对应数据":contacts);
tableItem.setText(3, gender==null?"无对应数据":gender);
tableItem.setText(2, hours==null?"无对应数据":hours);
tableItem.setText(1, name==null?"无对应数据":name);
tableItem.setText(0,id);
}
else{
MessageDialog.openError(shell,"查询失败","请输入需要查询的志愿者编号");
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
button_3.setText("查询");
button_3.setBounds(470, 118, 120, 37);
如果tableItem还是放在事件里,每查一次,table中就会多一行。
虽然解决了,但还是不知道为什么。为什么写jsp时,就可以这样呢,jsp中的table会自动刷新,重新生成。
所以你能看到变化而SWT写的客户端,创建的客户端是一直存在的
你在事件里面生成新的table,八成是在第一次生成的控件的背后
你可以把上面的坐标,颜色等改成动态的,
让每次生成的table都错开,看看效果