了解基础知识。
JAVA 1.7 SWT。
我有一个文本字段和onle列表。 当用户在文本字段中输入内容时,应该选择列表中的第一个匹配值。
我用list.selection(list.indexOf(value))
尝试但list.indexOf(value)
只返回完全输入的字符串的ID。
我很确定,检查列表中每个值的所有字符并不是一个好习惯。
有没有人能给我一个暗示最佳做法是什么?
迈克尔
答案 0 :(得分:1)
假设您有一个Text小部件,这是一段代码,可以满足您的需求:
final Text textbox = new Text(composite_1, SWT.BORDER);
textbox.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
String s = textbox.getText();
if (s.length() == 0) {
list.deselectAll();
return;
}
String[] items = list.getItems();
for (int i = 0; i < items.length; i++) {
if (items[i].startsWith(s)) {
// found the first item which match the typed text (case sensitive) in the textbox, select it and stop
list.select(i);
break;
}
}
}
});
答案 1 :(得分:0)
我做过..
String pattern ="^"+item+"\\w*\\_*";
for(int j = 0 ; j < lstTables.getItemCount(); j++){
if(list.getItem(j).matches(pattern) == true){
list.select(j);
list.showSelection();
lstTables.setBackground(Colorlist.textfieldClear);
lstTables.setFocus();
return true;
}
}