2012-03-05 79 views
13

我正在將JTextArea添加到具有尊重首選大小和位置的佈局管理器的組件中。然而,所顯示的插入符號在JTextArea中的位置輸入幾個「寬」的字母(例如「M」)後變爲錯誤:JTextArea中的插入符號位置已關閉

enter image description here

這是在已經輸入從左邊和所有的字母實際插入位置在'd'之後。這種情況下的JTextArea比文本寬得多。不確定它是否可能是相關的,但使用的字體是Arial,大小11,純樣式,並且在將JTextArea添加到父容器之前正在設置。任何想法可能會造成這種情況?

+5

爲了更好地幫助越早,張貼[SSCCE](http://sscce.org/)。 – 2012-03-06 00:08:56

+0

它是一個4.5K線應用程序的一部分,但我可以嘗試... – 2012-03-06 00:13:29

+1

@DanielMaly - 我同意安德魯。我做了很多Swing的工作,並且沒有任何關於這個問題的消息,因爲我有一個明顯的解決方案。將問題隔離到一個簡單的程序中,以便我們可以嘗試一下。如果您不能發佈SSCCE,那麼至少要告訴我們您使用的是什麼LayoutManagers * *。一個自定義的? – 2012-03-06 00:16:34

回答

0

我以前在使用JBuilder時遇到同樣的問題,插入符的位置不在應該的位置。

它只是發生於Windows中國版,如果系統是英文版本,它是很好..

爲了解決它,只是去JBuilder的設置,更改所有字體到中國的字體。

這不是jbuilder問題,它也發生在其他java應用程序中,實際上它是JRE問題,去JRE/lib目錄,修改font.properties或fontconfig.peroperties.src(取決於不同的jre版本),添加字體會解決這個問題。

我想這不是你的問題的答案,但也許會發生某人,僅供參考。

1

檢查了這一點。有用。

我已經在我的一個應用程序中使用了它。

Rectangle r = textArea.modelToView(textArea.getCaretPosition()); 
int caretX = r.x; 
int caretY = r.y; 
0

,你也可以嘗試使用類似的folloiwng強行將插入符號在文本的末尾:

JTextArea displayArea;  
displayArea.setCaretPosition(displayArea.getDocument().getLength()); 
1

試試這個:

JTextArea textArea; 
DefaultCaret caret = (DefaultCaret) textArea.getCaret(); 
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); 
相關問題