用Java开发C/S应用(七):swt中使用Table控件查询数据库数据
代码稍微有点多,我只贴createContents()部分的内容:
我是拖了一个Table控件,三个Table column控件到窗体上,然后使用代码: protected void createContents() {
shell = new Shell();
shell.setLayout(new FormLayout());
shell.setSize(787, 527);
shell.setText("SWT Application");
final Composite composite = new Composite(shell, SWT.NONE);
final FormData fd_composite = new FormData();
fd_composite.bottom = new FormAttachment(0, 27);
fd_composite.top = new FormAttachment(0, 5);
fd_composite.right = new FormAttachment(0, 41);
fd_composite.left = new FormAttachment(0, 5);
composite.setLayoutData(fd_composite);
composite.setLayout(new FillLayout());
final Composite composite_1 = new Composite(composite, SWT.NONE);
composite_1.setLayout(new FillLayout());
final Button button = new Button(composite_1, SWT.NONE);
button.addMouseListener(new MouseAdapter() {
public void mouseDown(final MouseEvent e) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","username","password");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from tbtestpaper";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
TableItem item = new TableItem(table,SWT.NONE);
item.setText(new String[] {rs.getString("FIELD1),rs.getString("FIELD2"),rs.getString("FIELD3)});
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
button.setText("查询");
table = new Table(shell, SWT.FULL_SELECTION | SWT.BORDER);
final FormData fd_table = new FormData();
fd_table.right = new FormAttachment(100, -5);
fd_table.bottom = new FormAttachment(100, -5);
fd_table.top = new FormAttachment(0, 32);
fd_table.left = new FormAttachment(0, 5);
table.setLayoutData(fd_table);
table.setLinesVisible(true);
table.setHeaderVisible(true);
table.addListener(SWT.MeasureItem, new Listener() {
public void handleEvent(Event event) {
event.height = 20;
}
});
final TableColumn newColumnTableColumn = new TableColumn(table, SWT.NONE);
newColumnTableColumn.setWidth(10);
newColumnTableColumn.setText("字段一");
final TableColumn newColumnTableColumn_1 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_1.setWidth(100);
newColumnTableColumn_1.setText("字段二");
final TableColumn newColumnTableColumn_2 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_2.setWidth(150);
newColumnTableColumn_2.setText("字段三");
}
shell = new Shell();
shell.setLayout(new FormLayout());
shell.setSize(787, 527);
shell.setText("SWT Application");
final Composite composite = new Composite(shell, SWT.NONE);
final FormData fd_composite = new FormData();
fd_composite.bottom = new FormAttachment(0, 27);
fd_composite.top = new FormAttachment(0, 5);
fd_composite.right = new FormAttachment(0, 41);
fd_composite.left = new FormAttachment(0, 5);
composite.setLayoutData(fd_composite);
composite.setLayout(new FillLayout());
final Composite composite_1 = new Composite(composite, SWT.NONE);
composite_1.setLayout(new FillLayout());
final Button button = new Button(composite_1, SWT.NONE);
button.addMouseListener(new MouseAdapter() {
public void mouseDown(final MouseEvent e) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","username","password");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from tbtestpaper";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
TableItem item = new TableItem(table,SWT.NONE);
item.setText(new String[] {rs.getString("FIELD1),rs.getString("FIELD2"),rs.getString("FIELD3)});
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
button.setText("查询");
table = new Table(shell, SWT.FULL_SELECTION | SWT.BORDER);
final FormData fd_table = new FormData();
fd_table.right = new FormAttachment(100, -5);
fd_table.bottom = new FormAttachment(100, -5);
fd_table.top = new FormAttachment(0, 32);
fd_table.left = new FormAttachment(0, 5);
table.setLayoutData(fd_table);
table.setLinesVisible(true);
table.setHeaderVisible(true);
table.addListener(SWT.MeasureItem, new Listener() {
public void handleEvent(Event event) {
event.height = 20;
}
});
final TableColumn newColumnTableColumn = new TableColumn(table, SWT.NONE);
newColumnTableColumn.setWidth(10);
newColumnTableColumn.setText("字段一");
final TableColumn newColumnTableColumn_1 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_1.setWidth(100);
newColumnTableColumn_1.setText("字段二");
final TableColumn newColumnTableColumn_2 = new TableColumn(table, SWT.NONE);
newColumnTableColumn_2.setWidth(150);
newColumnTableColumn_2.setText("字段三");
}
TableItem item = new TableItem(table,SWT.NONE);
item.setText(new String[] {rs.getString("FIELD1),rs.getString("FIELD2"),rs.getString("FIELD3)});
把从数据库中取到的内容填充到Table中去item.setText(new String[] {rs.getString("FIELD1),rs.getString("FIELD2"),rs.getString("FIELD3)});
中间有这么一段代码:
table.addListener(SWT.MeasureItem, new Listener() {
public void handleEvent(Event event) {
event.height = 20;
}
});
意思是为Table的数据行设置行高
public void handleEvent(Event event) {
event.height = 20;
}
});