2011-12-19 57 views
5

我正在使用java,并且我正在尝试使JTextArea不可编辑,但仍然存在该字段中的插入符号。换句话说,文本区域不显示用户键入的字符,但仍有闪烁的插入符号(即焦点)。在不可编辑的情况下在TextArea中保留插入标记

我真的很难对付这个问题。我试过用setEditable,但没有办法保留插入。我也尝试删除用户输入的字符,只要他们键入它,但我无法阻止它在屏幕上闪烁。

+0

请注意:你可能会混淆用户 - 闪烁_caret_(这对:-)是被编辑 – kleopatra 2011-12-20 12:06:10

回答

8

我认为有以下将帮助您:

textArea.getCaret().setVisible(true); 

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

干杯标准的视觉线索标记技术术语,完美的作品 – 2011-12-19 13:14:50

+1

如果你想恢复鼠标光标,尝试'textArea.setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));' – gd1 2014-11-10 15:57:30

1

对于上述

textArea.getCaret().setVisible(true); 

答案并不总是完美的,如果工作,文本区域或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 2015-03-22 13:17:29

相关问题