• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTextAreaから一行ずつ文字列を取得
#navi(../)
*JTextAreaから一行ずつ文字列を取得して [#sce4576b]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2006-10-09~
更新日:&lastmod;

#contents

**概要 [#i4a502e8]
JTextAreaなどのテキストコンポーネントから一行ずつ文字列を取り出してそれを処理します。

#screenshot

**サンプルコード [#cba0b2ee]
 int count = 0;
 StringTokenizer st = new StringTokenizer(textArea.getText(), "\n") ;
 while(st.hasMoreTokens()) {
   if(st.nextToken().startsWith("#")) {
     count = count + 1;
   }
 }
 //Document doc = textArea.getDocument();
 //Element root = doc.getDefaultRootElement();
 //try{
 //  for(int i=0;i<root.getElementCount();i++) {
 //    Element elem = root.getElement(i);
 //    String line = doc.getText(elem.getStartOffset(), elem.getEndOffset()-elem.getStartOffset());
 //    String line = doc.getText(elem.getStartOffset(),
 //                              elem.getEndOffset()-elem.getStartOffset());
 //    if(line.startsWith("#")) {
 //      count = count + 1;
 //    }
 //  }
 //}catch(BadLocationException ble) {
 //  ble.printStackTrace();
 //  count = -1;
 //}

-&jnlp;
-&jar;
-&zip;

**解説 [#v1446cab]
上記のサンプルでは、JTextArea#getText() ですべてのテキストを取得し、StringTokenizer を使って行毎に分解しています。

コメントアウトしたコードのようにドキュメントが行を取り出した方が若干速い気((まだ実験したわけではない))がするのですが、行数が少ない場合は簡単なStringTokenizerを使用する方法で問題ないと思います。

//**参考リンク
**コメント [#ee4fa454]
#comment