我正在尝试在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);
答案 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无法使用。