如何在JTextField中以像素为单位获取Caret位置?

时间:2013-09-05 18:01:27

标签: java swing jtextfield caret

如何在JTextField中以像素为单位获取插入位置?有一个方法getCaret().getDot(),但它返回符号计数,而不是像素。除FontMetrics之外还有其他方法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用API​​:

int pixelPosition = textField.modelToView( textField.getCaretPosition() ).x;

答案 1 :(得分:2)

鉴于JTextField someJTextField,以下代码应该为您提供护理的像素位置:

FontMetrics fm = myJTextField.getFontMetrics();
int caret = someJTextField.getCaret().getDot();


int pixelPosition = fm.stringWidth(myJTextField.getText(0, caret)) -
                                   myJTextField.getScrollOffset();