在javafx中键入autocompletion时,如何在codeare中的当前插入符号位置创建listview?到目前为止,我找到了当前正在键入的单词,并查看该单词是否包含在数组中。这是我目前掌握的密码。提前谢谢! String[] keyphrases = new String[]{"int main(){\n}", "cout", "cin"};
```
((CodeArea)tabPane.getSelectionModel().getSelectedItem().getContent()).textProperty().addListener(new ChangeListener()
{
@Override
public void changed(ObservableValue<? extends String> observableValue, String s, String s2) {
CodeArea sto = ((CodeArea)tabPane.getSelectionModel().getSelectedItem().getContent());
String curr = "";
String currFinal = "";
for (int i = sto.getAnchor(); i > 0; i--) {
if (sto.getText().charAt(i) == '\n' || sto.getText().charAt(i) == ' ') {
break;
}else {
curr += sto.getText().charAt(i);
}
}
for (int i = curr.length()-1; i >= 0; i--) {
currFinal += curr.charAt(i);
}
System.out.println(currFinal);
ArrayList fil = new ArrayList();
for (int i = 0; i < keyphrases.length; i++) {
if (keyphrases[i].contains(currFinal)) {
fil.add(keyphrases[i]);
}
}
//display fil as listview in caret position?
}
});
2条答案
按热度按时间k4emjkb11#
如果您询问如何在插入符号位置显示listview,请检查以下方法。这是在当前插入符号位置显示listview的一般高级方法。您可以关联逻辑并根据您的要求进行更改。
我相信这会给你关于如何接近的必要的基础知识。尽管如此,还有许多其他更好的方法。
其核心思想是依赖插入符号节点(路径)边界,而不是通过复杂的计算来寻找插入符号在文本中的位置。
rqenqsqc2#
利用sai的答案,我创建了自己的解决方案!