私はトレーニング目的でJavaでテキストエディタを作成しています。だから、私はJTextPaneを使ってテキストを編集し、setCharacterAttributesを使ってテキスト中のいくつかの単語を強調表示しています。コードは部分的に機能し、最初の行はすべて動作しますが、2行目と4行目ではコードが機能しなくなります。コード怒鳴るは、このバグを修正する私の試みを示していますJTextPaneは最初の行で文字属性を正しく設定します
private void changeColor(StyledDocument styledDocument) { String keywords[] = {"html", "body", "div", "teste"}; String texto = edtEditing.getText(); int startIndex; int start; StyleContext context = StyleContext.getDefaultStyleContext(); Style styleDefault = context.getStyle(StyleContext.DEFAULT_STYLE); // default styledDocument.setCharacterAttributes(0, texto.length(), styleDefault, true); AttributeSet attr = context.addAttribute(context.getEmptySet(), StyleConstants.Foreground, Color.red); for (String word:keywords) { startIndex = 0; start = texto.indexOf(word, startIndex); while (start >= 0) { styledDocument.setCharacterAttributes(start, word.length(), attr, true); startIndex += word.length(); start = texto.indexOf(word, startIndex); } } }
は怒鳴る画像上のエラーを参照してください: Click to see the error
をerrosが原因CRLFのために発生しますが、私は、なぜ...
を把握することはできませんように見えますここにはexecutable jar fileがあります。 「ファイル」 - >「新規」を選択し、「teste」と入力してください 事前に感謝します!
エラーは何ですか? –
最初の行に "teste"と入力してOKを入力し、もう一度 "teste"と入力するとエラーが表示されます。 "este"だけが強調表示され、再度Enterキーを押すと "ste"だけがハイライト表示されます...唯一の違いは、改行がコンポーネントによって正しく処理されていないことです。 – ViniciusC
'jar'ファイルを使ってコードの問題を見つけることができません。何が起こったのか再度' teste'を打つと教えてください。 –