getText(),然后用StringTokenizer分解一下应该就可以了"/r/n"是分隔符。否则getLineEndOffset(int line) int getLineStartOffset(int line) 可以确定某一行的起点终点位置,慢慢substring也可以了吧。(document里面有个函数getText(int offset, int length) 可以用)
调试欢乐多
判断光标所在行,并记录位置信息3。setSelectionStart(start)
setSelectionStart(end)
getSelectedText()//得到你所需要文本。
不过还是有一点小问题。
其中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”根本没有起到作用!
郁闷!!!
请大家帮我看一下!!!
谢谢!!!
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{ /**
* コンポーネント上でマウスがクリックされると呼び出されます
* @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();
}
}
}
}
}