Есть ли способ перехватить не отображаемые символы перед их записью в JTextArea? - PullRequest
3 голосов
/ 25 января 2010

Я изменяю свое поведение keyTyped на вывод по умолчанию символа в JTextArea, однако, когда я копирую и вставляю, он выдает не отображаемый символ.

Мне нужно, чтобы это работало в нескольких операционных системах, поэтому использование варианта 22: не работает, поскольку это не относится к Mac. У Sun либо есть возможность поймать пасту / копию, свободную от ограничений ОС, или кто-то знает хороший обходной путь?

Ответы [ 2 ]

2 голосов
/ 25 января 2010

Возможно, вы захотите изучить фильтры документов .

Добавление фильтра документов позволит вам изменить (или даже запретить) строку, добавленную в документ JTextArea. Пользовательский фильтр документов может быть добавлен, если ваша текстовая область использует некоторый подкласс AbstractDocument в качестве реализации документа. Примерно так:

AbstractDocument doc = (AbstractDocument)textArea.getDocument(); 
doc.setDocumentFilter( new DocumentFilter() {
  public void insertString( FilterBypass fb, int offset, String string,
      AttributeSet attr ) throws BadLocationException
  {
    // Test string here and modify if required, then call super.insertString()
    // (usually called on a "paste")
  }

  public void replace( FilterBypass fb, int offset, int length,
      String text, AttributeSet attrs ) throws BadLocationException
  {
    // Test string here and modify if required, then call super.replace()
    // (usually called when characters are typed)
  }
});

(В вашей "реальной" реализации вы можете приятно проверить, что на самом деле используется AbstractDocument, а не приведенный мной актерский состав).

0 голосов
/ 25 января 2010

Я думаю, что вы можете изменить поведение буфера обмена:

  1. Создать TransferHandler , который реализует функцию importData ()
  2. Установите TransferHandler для вашей функции, вызвав JComponent.setTransferHandler ()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...