2014-02-19 25 views
0

我有一個延伸JFrame的類,它包含一個JMenuBar和一些組件,其中最裏面顯示一個Applet。當小程序被加載後,我點擊菜單欄上的其中一個菜單,我發現菜單的下拉部分隱藏在小程序下面。在JMenu上繪製小程序

下面是說明這一個畫面:

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

不這樣做是不是一種選擇,因爲我加載小程序是不是我在這個意義上,我沒有創造它,我只是加載它。底線是我無法使小程序成爲JApplet或某個其他組件。但是,包裝它可能是一種可能性。

有沒有人有任何建議,我該如何解決這個重疊?

+0

搜索在AWT/Swing的 – mKorbel

+0

用輕質混合重量級我已經看過那個,並根據它,我不應該甚至有因爲Java 7中,我使用它來擔心。但是,我仍然有這個問題。 –

回答

0

我找到了解決我的問題的方法。這兩條線就是訣竅。

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