Событие мыши не может быть обработано для специфичной платформы
Следующий код был успешно протестирован тестовом окружении, под управлением JRE той же самой версии, что и Target JDK Platform (JDK 1.6.0.45 32 Bit) на Windows 10 Enterprise 64 Bit
На той же машине в интеграционном окружении под управлением развернутого с помощью Java Web Start JRE другой версии 1.8_60 32 Bit у меня возникли проблемы с обработкой событиия прокрутки колесика мыши: согласно логам обрабочик на интеграции не вызывается.
Проблема воспроизводится на других машинах с теми же версиями ОС и JRE.
Как я могу локализовать и решить проблему?
- Является ли проблема с версией
JRE? - Является ли это проблемой CCombo?
// Класс скомпилирован на JDK 1.6
// Target Platform не может быть изменен технически
public class CComboUtils {
public static void disableMouseWheel(final CCombo combo) {
// Выполняется как в тестовом окружении (jdk 1.6), так и в интеграционном окружении (jre 1.8)
combo.addListener(SWT.MouseWheel, new Listener() {
public void handleEvent(Event event) {
// Выполняется в тестовом окружении. НЕ выполняется в интеграционном окружении
System.out.println("CComboUtils.disableMouseWheel::handleEvent");
if (event.count > 0) {
System.out.println("CComboUtils.disableMouseWheel::handleEvent::handleScrollUp");
handleScrollUp(combo, event);
} else if (event.count < 0) {
// Выполняется в тестовом окружении. НЕ выполняется в интеграционном окруженииSystem.out.println("CComboUtils.disableMouseWheel::handleEvent::handleScrollDown");
handleScrollDown(combo, event);
}
}
});
}
public static void handleScrollUp(CCombo combo, Event event) {
if (combo.isFocusControl()) {
// Выполняется в тестовом окружении. НЕ выполняется в интеграционном
// could be a legitimate key event, let CCombo handle it
return;
}
event.doit = false;
}
public static void handleScrollDown(CCombo combo, Event event) {
if (combo.isFocusControl()) {
// Выполняется в тестовом окружении. НЕ выполняется в интеграционном
// could be a legitimate key event, let CCombo handle it
return;
}
event.doit = false;
}
}
Ответы (1 шт):
Сменилось две версии JRE. Конечно там уже за это время могли удалить событие и заменить его совершенно другим, "прогрессивным". Если таргетовая версия готового продукта - 1.8, то и пиши на 1.8, в чём проблема... Сейчас почти везде 1.8 юзается: 1.6 уже дико сложно найти, только на каких-нибудь сайтах)) Теперь код слушателя событий колёсика мыши выглядит примерно так:
(Любой JComponent).addMouseWheelListener(new MouseAdapter() {
public void mouseWheelMoved(MouseWheelEvent e) {
//DO SOMETHING
}
});
Попробуй поменять версию JRE и JDK на более новую.