首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMenuItem背弃GLCanvas?

JMenuItem背弃GLCanvas?
EN

Stack Overflow用户
提问于 2017-10-12 13:29:47
回答 1查看 128关注 0票数 0

我对显示在JMenuItem后面的GLCanvas有一些问题。

当第一次单击JMenuItem时,它会显示在GLCanvas前面,但是一旦单击JSplit来拉伸它,我就会遇到这个问题。

我发现这个问题通常是在与AWT组件一起使用Swing组件时引起的,

你知道如何解决这个问题吗?

这是我的密码。

代码语言:javascript
复制
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import com.jogamp.opengl.awt.GLCanvas;

public class MenuTest extends JFrame {
      public MenuTest()      {
            this.addWindowListener      (new WindowAdapter(){
                  public void windowClosing(WindowEvent e){
                        dispose();
                        System.exit(0);
                  }
            });
      }

      public static void main(String args[]) {
        int numberOfMenuItems = 5;
            MenuTest f = new MenuTest();
            Container cont = f.getContentPane();
            cont.setLayout(new GridLayout(2,1));
            JMenuBar menuBar = new JMenuBar();
            JMenu menu = new JMenu("testMenu");
            for(int i=0; i<numberOfMenuItems; i++){
                JMenu item = new JMenu("Item "+i);
                item.add(new JMenuItem("item"));
                menu.add(item);

            }
            menuBar.add(menu);
            f.setJMenuBar(menuBar);


            GLCanvas canvas = new GLCanvas();
            canvas.setBackground(new Color(100, 50, 100));
            JSplitPane split = new JSplitPane();

            Container wrappingContainer = new Container();
            wrappingContainer.setLayout(new BorderLayout());
            wrappingContainer.setBackground(new Color(100,100,100));
            wrappingContainer.add(canvas);

            split.add(wrappingContainer, JSplitPane.RIGHT);
            split.add(new JPanel(), JSplitPane.LEFT);

            f
            .getContentPane().add(split);

            f.setSize(400,200);
            f.show();
      }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-12 15:04:18

JPopupMenu有一种方法:

代码语言:javascript
复制
setDefaultLightWeightPopupEnabled(false);

JMenu有一种方法:

代码语言:javascript
复制
getPopupMenu();

所以我想你需要遍历你所有的菜单才能得到弹出式菜单并使它成为一个重量级弹出窗口。

有关详细信息,请参阅混合轻量级和重量级构件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46710923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档