在JMenu上画的小程序

时间:2014-02-19 06:28:25

标签: java swing applet

我有一个扩展JFrame的类,其中包含JMenuBar和一些组件,其中最内层显示Applet。当小程序加载并点击菜单栏上的其中一个菜单时,我发现菜单的下拉部分隐藏在小程序下面。

这是一张图片来说明这一点:

Applet painting over a menu.

我怀疑发生这种情况的原因是因为我将重量级Applet组件与轻量级其他组件混合在一起。我已经调查了这一点,似乎从我访问过的资源中,答案汇聚到:不要这样做或验证顶级容器。

我试过后者但没有用。这是我的代码(它在多线程环境中):

public void add(final Applet applet) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            centerCenterPanel.add(applet);
            centerCenterPanel.revalidate();
            SwingUtilities.getWindowAncestor(applet).validate();
        }
    });
}

不执行它不是一个选项,因为我加载的applet不是我的,因为我没有创建它,我只是加载它。底线是我不能使applet成为JApplet或其他组件。但是,包装它可能是一种可能性。

有没有人就如何解决这个重叠提出任何建议?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。这两条线就可以了。

JPopupMenu.setDefaultLightWeightPopupEnabled(false);
ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);