选择索引与getText索引不同

时间:2013-06-12 19:03:55

标签: java string swing document jeditorpane

我是java的新手,7天前开始一个项目,今天我和这个地方的一些人成功地解决了一个问题,但还有一个问题...

在上一个问题中,我需要搜索字符串并突出显示它,但现在,我的问题是:

为什么选择索引与我搜索的索引不同之后我不知道自己的某个未知字符:|

这是我的按钮代码:

    int startFrom = jEditorPane1.getSelectionStart();
    if(jEditorPane1.getSelectionStart() == jEditorPane1.getSelectionEnd()){
        startFrom = -1;
    }

    String searchWord = jTextField3.getText();
    int searchIndex = jEditorPane1.getText().indexOf(searchWord, startFrom + 1);
    if(searchIndex != -1){
        jEditorPane1.requestFocusInWindow();
        jEditorPane1.select(searchIndex, searchIndex+searchWord.length());
    }
    else{
        jEditorPane1.setSelectionStart(0);
        jEditorPane1.setSelectionEnd(0);
    }

并且我确定我需要做一些字符串处理,将字符串索引转换为swing jEditorPane / JTextPane索引

例如: 我在这里搜索字符串: “嘿, 你好吗?“

它以这种方式突出显示: “嘿, 你怎么做o?“

这意味着它开始了一个索引,它应该是什么,并且在这里它是\ n的casue escape char并且我不知道,导致它在单行文本中发生...

我怎么能得到这个?

1 个答案:

答案 0 :(得分:1)

有关更多信息和解决方案,请参阅Text and New Lines。此链接的基础是使用:

int length = textPane.getDocument().getLength();
String text = textPane.getDocument().getText(0, length);

以上只会返回“\ n”作为EOL字符串,因此当您进行搜索然后选择文本时,偏移量将匹配。