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