#swing #events #focus #mouse #lwjgl
#swing #Мероприятия #фокус #мышь #lwjgl
Вопрос:
Я встроил LWJGL-canvas (в JPanel, который находится в JSplitPane) в мой JFrame. И у меня есть JMenuBar. Проблема в том, что LWJGL захватывает фокус и не запускает события мыши swing. Поэтому, если я, например, щелкну по холсту LWJGL, когда появится одно из JMenu — swing проигнорирует (фактически не получит никакого) события, и всплывающее окно не исчезнет.
Я также пытался повторно проверить панель меню и весь JFrame, пока у меня ничего не получалось. В моем случае Robot не является решением — я не хочу его использовать, это вызовет разногласия. Кстати, я пытался сделать что-то вроде этого:
MouseEvent me = new MouseEvent(mainFrame, 0, 0, 0, 0, 0, 1, false);
for (MouseListener m : menuBar.getMouseListeners()) {
m.mousePressed(me);
}
Но это также не имело никакого эффекта.
Есть ли какие-либо другие решения? Как я могу очистить все выбранные в JFrame, например, когда пользователь сворачивает окно или нажимает клавишу WIN?
Комментарии:
1. О, спасибо, капитан Очевидность. Мне нравится знать, как очистить выборки, а не получать событие. Я читал о смешивании LWJGL и Swing, но это не ключ к разгадке
Ответ №1:
Вы можете получить щелчок мыши из LWJGL. Теперь вы можете вызвать
MenuSelectionManager.defaultManager().clearSelectedPath()
чтобы закрыть меню.