2013-09-05 187 views
0

如何在JTextField中獲取以像素爲單位的插入位置?有一種方法getCaret().getDot(),但它返回符號計數,而不是像素。除FontMetrics之外還有其他方法嗎?如何在JTextField中獲取插入點的像素位置?

+0

我正要建議'FontMetrics',直到我讀它在你的問題結束。我認爲這絕對是最好的方式。另外,如果您通過Java源代碼查看JTextComponent,您可能會看到它們如何派生出在哪裏繪製插入符號 – Cruncher

+0

是的,現在我認爲這是唯一的方法,而且不是很複雜。 @Cruncher你可以發表一個例子,我會投票:) –

+0

閱讀我對答案的評論。它有限制。 – Cruncher

回答

3

從API,您可以使用:

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

是的,它工作完美,經過測試。我認爲這種方法更好。謝謝 :) –

2

鑑於JTextField someJTextField下面的代碼應該給你關懷的像素位置:

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


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

這實際上是一個假設。如果輸入的字符多於字段的寬度,則字符串的最左部分不再是可見的,那麼這將不起作用。 – Cruncher

+0

是的,這真的是一個問題.. –

+0

今晚我會想到更完美的解決方案 – Cruncher

相關問題