# mouse click - cursor



## bassem (9. Juni 2006)

Hallo, 

ich habe ein TextArea in einem Frame gebaut, wo man Ausgabedaten in Form von Zeilen in diesem TextArea darstellt. Jetzt möchte ich mit EINEM Mouse Click auf die Zeile die entsprechende Zeile markieren. Leider hat die Funktion getSelectedText() nicht geklappt, leider muss ich 2 oder 3 mal clicken bis ich die ganze Zeile markiert habe.

JTextArea b = new JtextArea()
b.getSelectedText();

Danke.


----------



## javaprogger1987 (9. Juni 2006)

Probier mal das:

```
import javax.swing.*;
import java.awt.event.*;

public class Selector implements MouseListener
{
  public Selector()
  {
    JFrame frame = new JFrame( "Selector" );
    JTextArea area = new JTextArea();
    area.addMouseListener( this );

    frame.getContentPane().add( area );
    frame.setSize( 300, 300 );
    frame.setVisible( true );

    for ( int i = 0; i < 10; i++ )
    {
      area.append( i*1000 + "\n" );
    }
  }


  public static void main( String[] args )
  {
    Selector s = new Selector();
  }

  public void mouseClicked( MouseEvent e ) 
  {
    if( !( e.getSource() instanceof JTextArea ) )
      return;
    
    JTextArea src = (JTextArea)e.getSource();
    int pos = src.getCaretPosition();
    int after = src.getText().indexOf( "\n", pos );
    int before = src.getText().substring( 0, pos ).lastIndexOf( "\n" );
    src.setSelectionStart( before );
    src.setSelectionEnd( after );    
  }

  public void mousePressed( MouseEvent e ) {
  }

  public void mouseReleased( MouseEvent e ) {
  }

  public void mouseEntered( MouseEvent e ) {
  }

  public void mouseExited( MouseEvent e ) {
  }
}
```

Gruß
Tobias


----------

