Использовать клавишу Tab для многострочного текста, поданного в swt?
Как предотвратить многострочное текстовое поле от" кражи " вкладок-нажатия клавиш?
Я имею в виду: я хотел бы использовать TAB для цикла между элементами окна, но когда я ввожу многострочный текст, TAB становится "нормальной" клавишей и просто вставляет табуляторы в текст, который я печатаю.
Как мне справиться с этим? Должен ли я написать пользовательский прослушиватель или могу изменить поведение компонента с помощью константы SWT?
2 ответов
SWT определяет механизм реализации такого поведения с помощью класса TraverseListener. Следующий фрагмент (взят из здесь) показывает, как:
Text text1 = new Text(shell, SWT.MULTI | SWT.WRAP);
text1.setBounds(10,10,150,50);
text1.setText("Tab will traverse out from here.");
text1.addTraverseListener(new TraverseListener() {
public void keyTraversed(TraverseEvent e) {
if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
e.doit = true;
}
}
});
добавьте прослушиватель нажатия клавиш в текстовое поле или textarea и реализуйте специальный обработчик для TAB. Я тоже видел эту "вкладку" в приложениях Swing, и это обычно раздражает.
вы можете предложить другой обработчик для Shift- TAB который затем вставит \t
, Если вы все еще хотите, чтобы вкладки в textfield.