JMenuItem在GLCanvas背后贬低?

时间:2017-10-12 13:29:48

标签: java eclipse swing glcanvas

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

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

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

您是否知道如何解决此问题。

enter image description here

这是我的代码。

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();
      }
}

1 个答案:

答案 0 :(得分:1)

JPopupMenu有一个方法:

setDefaultLightWeightPopupEnabled(false);

JMenu有一个方法:

getPopupMenu();

所以我猜你需要遍历所有菜单以获得弹出菜单,并使其成为一个重量级弹出窗口。

有关详细信息,请参阅Mixing Heavyweight and Lightweight Components