北京融合教育:Java如何实现显示行标
来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 13:05:44
如 中间是一个TextArea. 左侧则显示文字的行号.
请给出实例代码。谢谢
Good question!
显示行号的组件必须和文本域分开但又必须和文本域一起上下滚动。
做这种事有比把两个 JTextArea 包在一个 JScrollPane 里更容易的方法吗?
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
class C extends JFrame {
public C( ) {
final JTextArea textArea = new JTextArea( 20, 50 ),
lineNumberColumn = new JTextArea( " 1 " );
textArea.getDocument( ).addDocumentListener( new DocumentListener( ) {
public void insertUpdate( DocumentEvent e ) {
lineNumberColumn.setText( "" );
for ( int i = 1; i <= textArea.getLineCount( ); i++ )
lineNumberColumn.append( " " + i + " \n" );
}
public void removeUpdate( DocumentEvent e ) { insertUpdate( e ); }
public void changedUpdate( DocumentEvent e ) { }
} );
lineNumberColumn.setBackground( Color.ORANGE );
lineNumberColumn.setFocusable( false );
JScrollPane sp = new JScrollPane( textArea );
sp.setRowHeaderView( lineNumberColumn );
getContentPane( ).add( sp );
pack( );
setLocation( 200, 200 );
setDefaultCloseOperation( EXIT_ON_CLOSE );
setVisible( true );
}
public static void main( String[ ] args ) { new C( ); }
}