13

好みのサイズと位置を尊重するレイアウト マネージャーを使用して、コンポーネントに JTextArea を追加しています。ただし、JTextArea に表示されるキャレットの位置は、いくつかの「ワイド」文字 (「m」など) を入力すると、正しくなくなります。

ここに画像の説明を入力

これは左からすべての文字を入力した後であり、実際のキャレット位置は「d」の後です。この場合の JTextArea は、テキストよりもはるかに広いです。関連するかどうかはわかりませんが、使用されているフォントは Arial、サイズ 11、プレーン スタイルであり、JTextArea を親コンテナーに追加する前に設定されています。これを引き起こしている可能性のあるアイデアはありますか?

4

4 に答える 4

1

これをチェックしてください。できます。

私は自分のアプリケーションの 1 つでこれを使用しました。

 Rectangle r = textArea.modelToView( textArea.getCaretPosition() );
 int  caretX = r.x;
 int  caretY = r.y;
于 2012-03-29T14:35:30.237 に答える
1

これを試して :

JTextArea textArea;
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
于 2012-08-03T19:55:31.477 に答える
0

以前にJBuilderを使用したときに同じ問題が発生しましたが、キャレットの位置が本来あるべき位置にありません。

これは、Windowsの中国語版でのみ発生しました。システムが英語版の場合は、問題ありません。

これを解決するには、jbuilder設定に移動し、すべてのフォントを中国語フォントに変更します。

これはjbuilderの問題ではなく、他のJavaアプリケーションでも発生します。実際には、JREの問題であり、JRE / libディレクトリに移動し、font.propertiesまたはfontconfig.peroperties.src(jreのバージョンによって異なります)を変更し、そこにフォントを追加します。この問題を解決します。

これはあなたの質問に対する答えではないと思いますが、参考のために誰かが起こったのかもしれません。

于 2012-03-19T06:57:30.650 に答える
0

次のようなものを使用して、テキストの最後にキャレットを強制的に配置することもできます。

JTextArea displayArea;    
displayArea.setCaretPosition(displayArea.getDocument().getLength());
于 2012-06-12T18:09:58.020 に答える