gpt4 book ai didi

java - 在验证自动完成方面需要帮助

转载 作者:行者123 更新时间:2023-11-30 09:40:29 26 4
gpt4 key购买 nike

四处寻找单行自动完成我在这里和那里找到了代码,最后最终使用了这个

public class AutoCompleteDocument extends PlainDocument {

private final List<String> dictionary = new ArrayList<String>();
private final JTextComponent jTextField;

public AutoCompleteDocument(JTextComponent field, String[] aDictionary) {
jTextField = field;
dictionary.addAll(Arrays.asList(aDictionary));
}

@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
super.insertString(offs, str, a);
String word = autoComplete(getText(0, getLength()));
if (word != null) {
super.insertString(offs + str.length(), word, a);
jTextField.setCaretPosition(offs + str.length());
jTextField.moveCaretPosition(getLength());
}
}

public String autoComplete(String text) {
for (Iterator<String> i = dictionary.iterator(); i.hasNext();) {
String word = i.next();
if (word.startsWith(text)) {
return word.substring(text.length());
}
}
return null;
}
}

然后我就这样用

autoCompleteDoc = new AutoCompleteDocument(myTextField,myDictionary);
myTextField.setDocument(autoCompleteDoc);

一切正常。

我的问题如下:

myTextField 有一个 actionPerformed 监听器,因此当我按下回车键时它会进行一些处理。

不幸的是,我想要的是当文本被“建议”(突出显示)时,当我按下回车键时,它会验证该提议,以便我可以继续输入,并且只有在没有文本被建议(没有突出显示)时,然后当我按下回车键时做我的处理。

我只是不知道从哪里开始。任何人都可以帮助我吗?

最佳答案

我认为您对 Document 的实现朝着正确的方向 +1,您必须添加 AttributeSetCaret 作为参数

请看如何AutoComplete JComboBox/JTextField作品

关于java - 在验证自动完成方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com