如果窗口中同时有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);
}
}