Я занимаюсь разработкой программного обеспечения, в котором клиентский запрос на все отключенные текстовые поля должен иметь возможность выполнять операции выделения текста, вырезания и копирования. Но сейчас не удается продолжить из-за какой-то проблемы. Поле ввода, которое соответствует требованиям, должно быть текстовым полем, доступным только для чтения, которое может выполнять выделение текста и копировать / вырезать с помощью сочетания клавиш Ctrl + C, и при щелчке по текстовому полю оно не должно вызывать никакого прослушивателя Focus / Action.
Ранее все отключенные компоненты отключались через
component.setEnabled (булево)
Но при этом все отключенные поля не могут выполнять операции выделения текста, вырезания и копирования. Я пробовал несколько способов включить операции копирования и вырезания, но обнаружил, что компонент не обрабатывает какое-либо ключевое событие в этом состоянии, похоже, оно связано с Component.enableEvents (long) Я подозреваю, что этот метод позволит контейнер для отправки KeyEvent компоненту, но этот метод недоступен из моего проекта.
Итак, я изменил все компоненты для использования
JComponent.setEditable (булево)
Но проблема этого метода в том, что все отключенные компоненты сработают FocusListener , этого не должно происходить, потому что все отключенные поля должны быть доступны только для чтения и иметь нулевое влияние на другие существующие поля. Есть ли способ включить операции вырезания и копирования, не используя FocusListener для запуска с помощью setEditable или есть другой более простой способ?
(И любой может помочь объяснить, как событие от компонента перехватывается и отправляется? Включите, как Java выполняет проверку, когда keyEvent должен / не должен отправлять дочерний компонент и есть ли способ, которым мы можем обойти те, которые проверяют и позволяют компоненту processKeyEvent, когда поле отключено).