Завершите ввод в JEditorPane при нажатии ENTER

Я использую JEditorPane в качестве компонента для отображения кода. JEditorPane находится в моем пользовательском PropertyEditorSupport для моего приложения платформы Netbeans и отображается в OutlineView и окне свойств.

Я уже ограничил JEditorPane только одной строкой, используя DocumentFilter. Однако я не могу восстановить функциональность JTextField, чтобы завершить ввод в компонент, нажав клавишу ENTER.

Я уже думал о добавлении события KeyListener в свой JEditorPane, но не уверен, что делать в случае события. Есть ли метод, который нужно вызвать для «завершения ввода текста»?


person padde    schedule 01.10.2014    source источник


Ответы (1)


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

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

В любом случае, если вы просто отображаете текст, я бы использовал JTextPane, поскольку он поддерживает текстовые атрибуты. JEditorPane используется для отображения HTML.

Я уже думал о добавлении события KeyListener

Не используйте KeyListener. Swing был разработан для использования с Key Bindings. По сути, вы создаете Action (в вашем случае вы бы расширили TextAction) и привязываете Action к KeyStroke. Ознакомьтесь с привязками клавиш, где содержится дополнительная информация, а также ссылка на учебник Swing на How to Use Key Bindings.

person camickr    schedule 01.10.2014
comment
Я использую JEditorPane из-за его способности иметь тип контента. Это позволяет мне зарегистрировать собственную подсветку синтаксиса внутри Netbeans для этого типа контента. Я согласен с вами, что обычно это может быть больше одной строки. В моем случае мы используем JEditorPane только для ввода простой строки кода, чтобы обеспечить быстрый способ что-то настроить. - person padde; 02.10.2014
comment
@padde, ну, JEditorPane был побочной проблемой, Key Bindings отвечает на ваш вопрос об обработке клавиши Enter. - person camickr; 02.10.2014