簡體   English   中英

在JTextArea中,插入位置已關閉

[英]Caret position is off in JTextArea

我將JTextArea添加到具有布局管理器的組件,該布局管理器尊重首選大小和位置。 但是,在鍵入幾個“寬”字母(例如'm')后,顯示的插入符號在JTextArea中的位置會變得錯誤:

在此輸入圖像描述

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

試試這個 :

JTextArea textArea;
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

看一下這個。 有用。

我在我的一個應用程序中使用過它。

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

您還可以嘗試使用類似下面的內容強制在文本末尾放置插入符號:

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

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

它只發生在Windows中文版,如果系統是英文版,那很好..

要解決它,只需進入jbuilder設置,將所有字體更改為中文字體。

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

我想這不是你問題的答案,但可能會有人發生,僅供你參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM