我对显示在JMenuItem后面的GLCanvas有一些问题。
当第一次单击JMenuItem时,它会显示在GLCanvas前面,但是一旦单击JSplit来拉伸它,我就会遇到这个问题。
我发现这个问题通常是在与AWT组件一起使用Swing组件时引起的,
你知道如何解决这个问题吗?

这是我的密码。
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();
}
}发布于 2017-10-12 15:04:18
JPopupMenu有一种方法:
setDefaultLightWeightPopupEnabled(false);JMenu有一种方法:
getPopupMenu();所以我想你需要遍历你所有的菜单才能得到弹出式菜单并使它成为一个重量级弹出窗口。
有关详细信息,请参阅混合轻量级和重量级构件。
https://stackoverflow.com/questions/46710923
复制相似问题