Очистить все выбранные JFrame

#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()
чтобы закрыть меню.