getText(),然后用StringTokenizer分解一下应该就可以了"/r/n"是分隔符。否则getLineEndOffset(int line)  int getLineStartOffset(int line) 可以确定某一行的起点终点位置,慢慢substring也可以了吧。(document里面有个函数getText(int offset, int length) 可以用)

解决方案 »

  1.   

    可能我的问题还没有说清楚,这么讲可以清晰一点,我现在要求鼠标在jTextArea中文本的某一行就要讲这一行读出。这样的话问题就清晰一点,明了一点了。能不能解决?
      

  2.   

    1。getSelectionStart()取得当天光标位置2。int end = getLineEndOffset(int line)  int start = getLineStartOffset(int line) 
    判断光标所在行,并记录位置信息3。setSelectionStart(start)
    setSelectionStart(end)
    getSelectedText()//得到你所需要文本。
      

  3.   

    谢谢楼上!!
    不过还是有一点小问题。
    其中int line是什么值?我试了几次,还是不行。我是将这些东东写在鼠标事件里的,是不是这样不行?
    还有也是最关键的问题:我将jTextArea里的文本内容读出,可是无法将其按行解析,郁闷!!!关于解析相关代码如下: index = textLine.indexOf("/n");
           index = jTextArea1.getSelectionStart();
           String theTextLine = textLine.substring(0,index);
           String lastTextLine = textLine.substring(index+1);
    此时index=-1!!!也就是说“/n”根本没有起到作用!
    郁闷!!!
    请大家帮我看一下!!!
    谢谢!!!
      

  4.   

    不考虑setLineWrap(true)产生的换行import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: </p>
     * @author unascribed
     * @version 1.0
     */public class Panel1 extends JPanel {
    //    BorderLayout borderLayout1 = new BorderLayout();
        JTextArea jta = new JTextArea();    public Panel1() {
            try {
                jbInit();
            }
            catch(Exception ex) {
                ex.printStackTrace();
            }
        }
        void jbInit() throws Exception {
    //        this.setLayout(borderLayout1);
            String s = "";
            for( int i = 0; i < 50; i++ ){
                for( int j =0; j < 10; j++ )
                s = s + i*j + "  ";
                s= s + "\r\n";
            }
            this.jta.setText( s );
            this.jta.addMouseListener( new MyMouseAdapter() );
            super.setSize( 500,400 );
            this.jta.setPreferredSize( new Dimension(500,400) );
            super.add( this.jta );
        }     private class MyMouseAdapter extends MouseAdapter{        /**
             * コンポ&#12540;ネント上でマウスがクリックされると呼び出されます
             * @param e マウスイベント
             */
            public void mouseClicked( MouseEvent e ) {
                if( e.getButton() == 1 ){
                try{
                    int selectedStart = jta.getSelectionStart();
                    int lineCount = jta.getLineCount();
                    int line = 0;
                    int start = 0;
                    int end = 0;
                    for( ;line < lineCount; line++ ){
                        start = jta.getLineStartOffset( line );
                        end = jta.getLineEndOffset( line );
                        if( selectedStart >= start && selectedStart <= end ){
                            break;
                        }
                    }
                    System.out.println("line:"+line);
                    jta.setSelectionStart( start );
                    jta.setSelectionEnd( end );
                }catch( Exception ee ){
                    ee.printStackTrace();
                }
                }
            }
        }
    }