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


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值