2011-12-19 8 views
5

私はjavaを使用していますが、編集可能ではありませんが、フィールドにはまだキャレットがあります。JTextAreaを作成しようとしています。言い換えれば、ユーザが入力した文字を表示しないが、まだ点滅するキャレット(すなわち、フォーカス)を有するテキストエリア。編集不可能なときにTextAreaにキャレットを残してください

私は正直なところこの問題を困惑しました。私はsetEditableで回り込んでみましたが、キャレットを保持する方法はありません。私はまた、ユーザーが入力するとすぐに入力する文字を削除しようとしましたが、画面上で点滅するのを止めることはできません。

+0

注意してください:あなたは、あなたのユーザーを混乱させる可能性があるだろう - 点滅_caret_(つまり編集可能 – kleopatra

答えて

8

私は次のようにあなたを助けるだろうと思い:

textArea.getCaret().setVisible(true); 

または

textArea.getCaret().setSelectionVisible(true); 
+0

乾杯あることのための標準的な視覚的な手がかりです:-)マーカーのための技術的な用語ですが、完全に –

+1

場合は、復元したい作品マウスカーソルも同様に 'textArea.setCursor(Cursor.TEXT_CURSOR)); – gd1

1

textArea.getCaret().setVisible(true); 

上記の回答のためにいつものようにTextAreaのかEditorPane場合、完璧に動作しません。フォーカスが失われる、別のフレームや何かをクリックすると、カーソルが戻ってくると再び表示されません。

私は同じ問題を抱えていました。解決策は、フォーカスリスナーを追加し、エディタがフォーカスを得るたびに表示するように設定することです。

text.addFocusListener(new FocusListener() { 
    public void focusLost(FocusEvent e) { 
    return; 
    } 

    public void focusGained(FocusEvent e) { 
    text.getCaret().setVisible(true); // show the caret anyway 
    } 
}); 
+0

私のキャレットリスナーに' text.getCaret()。setVisible(true); 'を追加しなければならなかったので、フォーカスリスナーは必ずしも機能しませんでした(しかし助けましたが)。これはJava 8(jdk 1.8.0_25)/ Mac OS X MountainLionで行われました。 – nyholku

関連する問題