import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; import javax.swing.SwingUtilities; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; import javax.swing.text.BadLocationException; public class CursorPosition implements CaretListener { private JTextArea area; private JLabel label; public CursorPosition(){ initComponents(); } private void initComponents() { area = new JTextArea(); area.addCaretListener(this); label = new JLabel(); JFrame frame = new JFrame("Cursor-Position"); frame.add(area, BorderLayout.CENTER); frame.add(label, BorderLayout.NORTH); frame.setSize(new Dimension(400,300)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } public void caretUpdate(CaretEvent e) { int cPos = area.getCaretPosition(); try { int lineNumber = area.getLineOfOffset(cPos); // beginnt bei 0 int startOffset = area.getLineStartOffset(lineNumber); String str = area.getText(startOffset, (cPos - startOffset)); int len = str.length(); label.setText("Zeile: " + new Integer(lineNumber + 1).toString() + " | Spalte: " + new Integer(len + 1).toString()); } catch (BadLocationException e1) { } } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new CursorPosition()); } }