Java 如何在列表中按值查找ID?

Java 如何在列表中按值查找ID?,java,swt,Java,Swt,从根本上说 Java1.7SWT 我有一个文本字段和一个列表。 当用户在文本字段中输入内容时,应选择列表中的第一个匹配值 我尝试使用list.selection(list.indexOf(value))但是list.indexOf(value)只返回完全输入的字符串的ID 我很确定,检查列表中每个值的所有字符不是一个好的做法 有人能告诉我什么是最佳实践吗 Michael假设您有一个文本小部件,这里有一段代码来完成您需要的内容: final Text textbox = new Text(

从根本上说

Java1.7SWT

我有一个文本字段和一个列表。 当用户在文本字段中输入内容时,应选择列表中的第一个匹配值

我尝试使用
list.selection(list.indexOf(value))
但是
list.indexOf(value)
只返回完全输入的字符串的ID

我很确定,检查列表中每个值的所有字符不是一个好的做法

有人能告诉我什么是最佳实践吗


Michael

假设您有一个文本小部件,这里有一段代码来完成您需要的内容:

    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;
          }
        }
      }  
    });
final Text textbox=新文本(复合_1,SWT.BORDER);
addModifyListener(新ModifyListener(){
@凌驾
公共无效modifyText(ModifyEvent arg0){
字符串s=textbox.getText();
如果(s.length()==0){
list.deselectAll();
返回;
}
String[]items=list.getItems();
对于(int i=0;i
我已经做了

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; 
        } 
    } 
String pattern=“^”+item+“\\w*\\\\\\\”;
对于(int j=0;j
您的列表是如何定义的?某处出错?
List List List=新列表(复合_1,SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL)里面只有字符串。我通过
this.list.add(value)
添加了值。如果您试图进行增量或部分搜索,您应该浏览列表中的所有元素,比较每个项目的文本是否以您的文本开头,然后选择列表中的项目。列表中没有用于部分匹配的选择函数。不清楚您试图实现什么。如果您想在
text
控件中自动完成文本,请查看
AutoCompleteField
JFace类。我尝试另一种解释:我有一个名为“ANTON、ANDREA、MICHAEL、MARIA、MARC、KERSTIN”的列表。如果我在文本字段中写入第一个字母“M”,则应选择“MICHAEL”。然后在文本字段中插入一个“A”。现在有“MA”,所以“MARIA”应该被选中——“MICHAEL”仍在列表中,但从未被选中。如果我将“RI”添加到文本字段(现在为“MARI”),则文本字段中会选择“MARIA”。