2012-03-06 2 views
5

У меня есть холст, некоторые текстовые поля и контекстное меню.JPopupMenu display под Canvas

Когда я запускаю приложение и нажимаю правой кнопкой мыши на холсте, отображается всплывающее меню. Но когда я пишу что-то внутри текстового поля, я просто нажимаю на холст, всплывающее окно будет показано за холстом.

Любая идея, как исправить это?

+2

поднять код, в идеале SSCE. Обычно, просто написав SSCE, вы найдете свою проблему. –

+0

Что такое SSCE? –

+0

http://sscce.org/, извините, я пропустил C –

ответ

5
JPopupMenu.setDefaultLightWeightPopupEnabled(false); 

решил проблему.

3

1) Canvas является AWT Component, и Heavyweight type of Components

2) JPopupMenu является Swing JComponent и Lightweight type of JComponents

3) можно решить, что с помощью Swing JPanel, а не AWT Canvas

4) Ваш вопрос около Mixing Heavyweight and Lightweight Components или rest is here

+0

Мне нужен тяжеловесный компонент, чтобы нарисовать его с помощью opengl. –

+0

согласованный правильный способ для OpenGL, ваш выбор проще, чем использование JPopup для использования Window или un_decorated Dialog, там вы можете поместить Swing JButtons, для кладки используйте GridLayout – mKorbel

+0

Uggh .. добавив ответы, прежде чем у меня был мой кофе, бессмысленно. +1 –