Java Swing菜单JMenu被遮挡(被覆盖,显示在底层)问题

如果窗口中同时有Swing弹出式组件(比如菜单、下拉框)和重量级AWT组件,那么弹出窗口有可能(有时候同样代码,不同机器,可能没有被覆盖,有点就被覆盖了)会被重量级组件所遮挡。

例如:

      如果是菜单或者下拉框,可调用JPopupMenu的静态方法setDefaultLightWeightPopupEnabled(false)将弹出的窗口强制为Canvas或者Window等重量级的AWT组件,这样就可以避免弹出窗口被别的AWT组件所覆盖。其他的弹出式组件都有对应的方法强制弹出重量级窗口。

import javax.swing.*;
  import java.awt.*;
  import java.awt.event.*;

  public class Test extends JApplet {
   public void init() {
    JPopupMenu.setDefaultLightWeightPopupEnabled(false);//关键一行。

    Container contentPane = getContentPane();
    JMenuBar menubar = new JMenuBar();
    JMenu menu = new JMenu("File");

    menu.add("New ...");
    menu.add("Open ...");
    menu.add("Save As ...");
    menu.add("Save");
    menu.add("Exit");

    contentPane.setLayout(new FlowLayout(FlowLayout.LEFT));
    contentPane.add(new Button("An AWT Button ............"));

    menubar.add(menu);
    setJMenuBar(menubar);
   }
  }


--------------------- 
作者:忙碌的布谷鸟 
来源:CSDN 
原文:https://blog.csdn.net/guoquanyou/article/details/38587713 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

你可能感兴趣的:(java)