Finding the cursor text position in JTextField
Asked Answered
K

3

9

Is there a method to return the position of the character in the JTextField. What I mean by that is if I have a JTextField with some values in it. For example, the field contains value ABCDEFJ. The user decides to put the cursor right after the character 'C' to enter a new value. Is there a method to get position where he enters the new character. In this example, that would return a 3.

Kingdon answered 13/6, 2012 at 15:58 Comment(2)
What is the actual use-case here? It is looking like a JSpinner (or perhaps an editable JComboBox) would be a better component to use.Spoil
This is not a good question because you're asking for a specific code solution rather than how to implement a behavior. The actual solution to your desired behavior may involve a completely different approach. For instance, if you're trying to check a JTextField's input before it is complete, then perhaps what you really want to use is a DocumentFilter. So in the future, please tell us more about the overall problem that you want to solve, and less on how specifically you are trying to solve it.Orb
G
19

JTextField.getCaretPosition()

JTextField.setCaretPosition(int pos)

Gosney answered 13/6, 2012 at 16:4 Comment(2)
Is there a more direct method -- Like setting the position to a text offset from start of the string?Indent
like this? JTextField.setCaretPosition(anyPrecalculatedOffset)Gosney
D
2

Try getting use of CaretListener interface:

public class A extends JFrame implements CaretListener
{
  //Assume you have a text field.
  public A()
  {
    JTextField field = new JTextField("bla bla");
    field.addCaretListener(this);
    .....
  }

  public void caretUpdate(CaretEvent e)
  {          
    int index = e.getDot();
    .....
  }
}

getDot() method of CaretEvent class returns the result you desire, you can assign it to a global variable to use later on.

Dwayne answered 13/6, 2012 at 16:6 Comment(0)
H
1

Here's your answer:

http://docs.oracle.com/javase/6/docs/api/javax/swing/text/JTextComponent.html#getCaretPosition%28%29

Use an ActionListener to wait for an action. When the user types something, find the caret position.

Hawkinson answered 13/6, 2012 at 16:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.