2017-01-08 55 views
0

JTextArea内のすべての偶数行を削除しようとしていますが、問題なく動作しています。 私のJTextAreaは "input"と呼ばれています。私はforループを使って行を繰り返し、偶数行をすべて削除しています。 forループ マイ:JTextAreaの行を削除します

for (int i=0; i<lineMax; i++) { 
    if (lineNum % 2 == 0) { 
     end = input.getLineEndOffset(0); 
     input.replaceRange("", 0, end); 
    } 
    lineNum++; 
} 

私は出力が(新しい行に各単語で)「テスト」になり、新たなライン上の各単語と私のJTextAreaにに「これはテストです」を入れた場合。

答えて

2
end = input.getLineEndOffset(0); 
input.replaceRange("", 0, end); 

これは常に最初の行のオフセットを取得するため、常にオフセット0から最初の行の最後までテキストを削除します。

アルゴリズムは、テキスト領域でループフォワードを実行しようとすると複雑になります。なぜなら、行を削除するたびに、次の行のオフセットが変化し、相対行番号が変更され、奇数/それ以上である。

より簡単なアプローチは、テキスト領域の最後の行から開始することです。この方法では、前の行の相対行番号はテキストを削除すると変更されません。

あなたはロジックを支援するJTextAreaの次のメソッドを使用することができます。

  1. getLineCount() - ここに開始し、ゼロ
  2. getLineEndOffset()getLineStartOffset()行目に戻ってカウント - あなたはあなたが得る偶数ラインを見つけたとき2つのオフセットとテキストを削除します。
関連する問題