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

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

例如:

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

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


你可能感兴趣的:(Swing菜单被遮挡(被覆盖,显示在底层)等问题)