0

私はJavaが初めてで、7日前にプロジェクトを開始しました。今日、この場所の何人かの人々と一緒に、1つの問題をうまく乗り越えましたが、まだもう1つ...

最後の問題では、文字列を検索して強調表示する必要がありましたが、今、私の問題は次のとおりです。

選択インデックスが、自分の知らない未知の文字の後に検索するインデックスと同じではないのはなぜですか :|

これは私のボタンコードです:

    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);
    }

そして、文字列インデックスをスイングjEditorPane/JTextPaneインデックスに変換するために、文字列処理を行う必要があると確信しています

たとえば、次のような文字列で do を検索します。「Hey, How do you do?」

そしてそれを次のように強調してoいます。

つまり、それが何をすべきかについて1つのインデックスを開始したことを意味します。ここでは、\nのエスケープ文字が原因であり、わかりません.1行のテキストで発生することがあります...

どうすればこれに乗ることができますか?

4

1 に答える 1

1

詳細と解決策については、テキストと改行を参照してください。このリンクの基本は、次を使用することです。

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

上記は EOL 文字列として「\n」のみを返すため、検索を行ってテキストを選択するとオフセットが一致します。

于 2013-06-12T19:05:32.237 に答える