如何在SWT Text区域的某个特定索引处获取字符

时间:2014-06-17 13:39:51

标签: java gwt textarea keyevent

我正在尝试在我的textarea中创建单词建议功能。

如果用户输入"这是测试"并按ctrl这应该给用户选择匹配" test" ..就像按下ctrl一样,它应该弹出一个单词" testing"例如。

因为我需要得到的是用户按下ctrl的字...即#34; test"在那种情况下。

我想在用户按下ctrl时获取光标索引..然后返回直到有空格,直到该索引将是我的单词..

但我不知道如何在某些指定的游标索引处获取该字符。

任何想法..

感谢

1 个答案:

答案 0 :(得分:0)

不是TextArea#getCursorPos()你在寻找什么?

这应该做:

final TextArea area = new TextArea();
area.addKeyDownHandler(new KeyDownHandler()
{
    @Override
    public void onKeyDown(KeyDownEvent event)
    {
        // Check if ctrl is pressed

        int position = area.getCursorPos();

        if(position > 0)
            System.out.println(area.getText().toCharArray()[position - 1]);
    }
});

那将给你光标的位置。然后,您可以使用该信息来获取前面的角色"光标。


如果你无法弄清楚如何获得这个词,请使用:

String text = area.getText();
char[] parts = text.toCharArray();
int startPosition = 0;

for(int i = position - 1; i >= 0; i--)
{
    if(parts[i] == ' ')
    {
        startPosition = i;
        break;
    }
}

System.out.println(text.substring(startPosition, position - 1));

您可能需要稍微修正索引以使边界正确。