Итак, после некоторого поиска, вот решение
В SWT вы можете добавить к экрану экземпляр слушателя 'filter', который может изменять практически все в событии (см. документы для подробностей ).
Предупреждение от Javadoc: Установка типа события для SWT. Ни один из метода handleEvent () не может использоваться для изменения типа события и остановки запуска последующих прослушивателей Java. Поскольку фильтры событий выполняются перед другими прослушивателями, фильтры могут блокировать других прослушивателей и устанавливать произвольные поля в событии. По этой причине фильтры событий являются мощными и опасными. Как правило, их следует избегать по причинам производительности, отладки и обслуживания кода.
Вот код (меняет любой набранный ключ на символ 'l'
и пишет это в консоли, когда событие действительно возникает)
browser.addListener(SWT.KeyDown, new Listener() {
public void handleEvent(Event event) {
System.out.println(event.character);
}
});
display.addFilter(SWT.KeyDown, new Listener() {
public void handleEvent(Event event) {
if(event.widget instanceof Browser) {
event.character = 'l';
}
}
});
ИМХО, это действительно грязное решение, реализация на стороне браузера (на JavaScript) намного красивее
Также, когда я смотрю на ваш код (во всяком случае, я не знаю, просто ли это какое-то тестирование, проверочный код), использование переменных с something_number
или arg0
меня огорчает. Это делает код таким нечитаемым и неясным, старайтесь избегать его;] ..