当前位置: 代码迷 >> Java相关 >> 高手请进!如何从JTextArea中一行一行的读出字符串
  详细解决方案

高手请进!如何从JTextArea中一行一行的读出字符串

热度:151   发布时间:2009-09-24 21:20:03.0
高手请进!如何从JTextArea中一行一行的读出字符串
我用JTextArea建立了一个text 并在里面输入了三行内容,现在我想按照输入的格式将text中的内容读出并存入到文件中,请问要怎么样才能按一行一行的读取出来
搜索更多相关的解决方案: 字符  JTextArea  

----------------解决方案--------------------------------------------------------
我看了一下JTextArea个JTextComponent的API文档,你这个问题的代码如下(假设你有一个TextArea的对象ta):
      
for(int i = 0; i < ta.getRows(); i++){
    System.out.println(ta.getText(ta.getLineStartOffset(i),ta.getLineEndOffset(i));
}
----------------解决方案--------------------------------------------------------
感谢楼上的 不过我用你的代码运行了下,我的代码如下
for(int i=0;i<text.getRows();i++)
            {
                 
                try
                {
                    System.out.println(text.getText(text.getLineStartOffset(i),text.getLineEndOffset(i)));
                }
                catch (Exception ee)
                {
                }
            }
却出现了错误说要抛出BadLocationException异常,可是我加了BadLocaionException后说找不到BadLocaionException这个符号,于是我改成Exception 虽然可以运行了可是结果却有错误
比如我在text中输入3行,可是显示出来的结果是第一正常显示,但下一行会空出一行然后再显示第二行的内容,这到底是怎么回事呢,希望高手给予解答

----------------解决方案--------------------------------------------------------
                text.append("\0");
                for (int i = 0; i < text.getLineCount(); i++) {
                    try {
                        System.out.println(text.getText(text    // getText(int offset,int length)
                                .getLineStartOffset(i), text
                                .getLineEndOffset(i)
                                - text.getLineStartOffset(i) - 1));
                    } catch (BadLocationException ex) {
                        ex.printStackTrace();
                    }
                }

----------------解决方案--------------------------------------------------------
回复 3楼 我爱JAVA1
二楼略粗心少了异常处理

----------------解决方案--------------------------------------------------------
以下是引用pywepe在2009-9-25 17:06:01的发言:

二楼略粗心少了异常处理
多谢指出
----------------解决方案--------------------------------------------------------
哦,说句实话,我没有上机试过,我想多出来的一行是打印时用错了函数,如果用System.out.print()方法就不会出现间隔行了,原因是你每读出一行字符串,字符串里已经带了一个换行符(你在输入字符串换行时输入的回车),但是用System.out.println()输出字符串时会在字符串输出后强制换行,这样你每输出一个字符串就会输出连个换行符(一个是字符串本身自有的换行符,另外一个是System.out.println()加的。
----------------解决方案--------------------------------------------------------
感谢大家的帮助 ,我试了四楼的方法终于成功了,也和大家学到了很多东西,希望我们继续互相帮助
----------------解决方案--------------------------------------------------------