在JTextField中查找光标文本位置

9

有没有一种方法可以返回JTextField中字符的位置。我的意思是,如果我有一个包含一些值的JTextField。例如,该字段包含值ABCDEFJ。用户决定在字符“C”右侧放置光标以输入新值。是否有一种方法可以获取他输入新字符的位置。在这个例子中,它将返回3。


这里的实际用例是什么?看起来使用JSpinner(或者可编辑的JComboBox)组件会更好。 - Andrew Thompson
这不是一个好问题,因为你正在寻求一个特定的代码解决方案,而不是如何实现某种行为。实现所需行为的实际解决方案可能涉及完全不同的方法。例如,如果您想在JTextField完成输入之前检查其输入,则也许您真正想使用的是DocumentFilter。因此,在将来,请告诉我们更多关于您想要解决的整体问题,而不是如何具体解决它。 - Hovercraft Full Of Eels
3个回答

18

JTextField.getCaretPosition()

获取光标的位置。

JTextField.setCaretPosition(int pos)

设置光标的位置。

有没有更直接的方法——比如将位置设置为字符串开头的文本偏移量? - will
像这样吗?JTextField.setCaretPosition(anyPrecalculatedOffset) - alaster

2
尝试使用 CaretListener 接口:
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();
    .....
  }
}

CaretEvent 类的 getDot() 方法会返回您需要的结果,您可以将其赋值给一个全局变量以便稍后使用。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接