![](/img/trans.png)
[英]Tooltip hidden behind JOGL GLCanvas on OS X when using non-Aqua look and feel
[英]JMenuItem desplaying behind GLCanvas?
我在GLCanvas后面顯示的JMenuItem有一些問題。
第一次單擊JMenuItem時,它顯示在GLCanvas的前面,但是一旦單擊JSplit進行拉伸,就會出現此問題。
我發現通常將Swing組件與AWT組件一起使用時會導致此問題,
你有什么想法如何解決這個問題。
這是我的代碼。
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();
}
}
JPopupMenu
有一個方法:
setDefaultLightWeightPopupEnabled(false);
JMenu
有一個方法:
getPopupMenu();
因此,我想您需要遍歷所有菜單以獲取彈出菜單並使之成為笨重的彈出窗口。
有關更多信息,請參見混合重量級和輕量級組件 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.