在Combobox中列出项目

时间:2015-05-12 11:05:25

标签: java combobox swt

我正在尝试在JFace中创建一个TitleAreaDialog。我有一个输入用户名的文本字段和一个用于选择用户组的组合框。要求是,当我在第一个文本字段中键入用户名时,我的组合框应该只显示与该用户名对应的组(数据库中有一个表,其中每个用户名都分配了一组组)。所以我编写了用于检索与输入的用户名对应的组的代码。但我没有得到组合框中的组列表。

我是否应该向文本框或组合框中添加任何侦听器,以便在文本字段中输入用户名后,我将在组合框中获取与该用户名对应的组列表?

请帮助我,因为我对这个主题和Java也很新。

text = new Text(composite, SWT.BORDER);
text.setBounds(205, 10, 109, 19);

Combo combo = new Combo(composite, SWT.NONE);
combo.setBounds(205, 49, 109, 21);

String reponame=text.getText();
String[] grpNames=db.getcomboValues(reponame);
combo.setItems(grpNames);

1 个答案:

答案 0 :(得分:1)

您可以在文本小部件中添加ModifyListener,并在每次更改时重新填充组合框,如下所示:

text.addListener( SWT.Modify, new Listener() {
  @Override
  public void handleEvent( Event event ) {
    String reponame = text.getText();
    String[] grpNames = db.getcomboValues( reponame );
    combo.setItems( grpNames );      
  }
} );

但是,只要文本发生变化,就会产生数据库请求。根据查询的时长,这可能会导致UI无法使用。