Сохраняйте курсор в TextArea, когда его нельзя редактировать - PullRequest
5 голосов
/ 19 декабря 2011

Я использую Java, и я пытаюсь сделать JTextArea, который не редактируется, но все еще имеет каретку в поле. Другими словами, текстовая область, которая не отображает символы, набранные пользователем, но все еще имеет мигающую каретку (то есть фокус).

Я, честно говоря, озадачен этой проблемой. Я пытался дурачиться с setEditable, но нет способа сохранить каретку. Я также попытался удалить символ, который вводит пользователь, как только он его напечатает, но я не могу остановить его мигание на экране.

Ответы [ 2 ]

9 голосов
/ 19 декабря 2011

Думаю, вам поможет следующее:

textArea.getCaret().setVisible(true);

или

textArea.getCaret().setSelectionVisible(true);
2 голосов
/ 04 февраля 2014

Что касается ответов выше

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
  }
});
...