Zasłanianie menu przez inne komponenty [SWING]

0

Cześć Koledzy,

Zwracam się do Was z prośbą o pomoc, bowiem nie mogę poradzić sobie z problemem zasłaniania menu JMenu przez inne komponenty. Definiuję klasę:

public class Scrable extends javax.swing.JFrame
{
   public Scrable()
   {
      this.InitializedComponent();
   }




   public void InitializedComponent()
   {
      this.mbManuPane = new javax.swing.JMenuBar();
      this.mGame = new javax.swing.JMenu("Gra");
      this.miNew = new javax.swing.JMenuItem("Nowa gra");
		
      // 
      // mbMenuPane
      // 
      this.mbManuPane.add(this.mGame);
		
      // 
      // miNew
      // 
      this.miNew.addActionListener(this);
		
      // 
      // mGame
      // 
      this.mGame.add(this.miNew);
		
      // 
      // this
      // 
      this.setJMenuBar(this.mbManuPane);
      this.setSize(700, 500);
      this.setTitle("Scrable");
   }
}

Jeśli teraz dołożę do niej np. Panel menu po rozwinięciu zostanie przez niego przesłonione. Poproszę Was o pomoc w rozwiązaniu tego problemu.

0

LayoutManager... Elementy interfejsu Swingowego są dodawane według LayoutManagera. Ty nie masz w swojej klasie jawnie zdefiniowanego, więc odpala się domyślny, czyli BorderLayout.CENTER. Wszystko wchodzi do środka i sie przysłania. Wystarczy prze dodawaniu menu podać mu pozycje NORTH add(menu, BorderLayout.NORTH);
a głownemu panelowi CENTER
add(panel, BorderLayout.CENTER);

0

Mam podobny problem jak grzeswisniewski i zrobiłem tak, jak radzi rajah83, a jednak w dalszym ciągu menu jest przesłonione.

add(menu, BorderLayout.NORTH); //tu dodaję JMenuBar
add(panel, BorderLayout.CENTER); //tu dodaję JLayeredPane

Czy może to być spowodowane właśnie typami dodawanych komponentów?
Wcześniej menu dodawałem przez setJMenuBar, a panel przez add(panel), tylko, że działało mi to tylko pod linuksem, pod windowsem już nie (tzn. pod windą menu było przesłonione przez panel, a pod linuksem było ok)

edit: SOLVED
Dgólnie chodzi o to, że menu jest lekkie a inne componenty jak panele lub canvasy ciężkie. Ciężkie komponenty przykrywają lekkie. Jak zmienić menu, żeby było ciężkie? http://exampledepot.com/egs/javax.swing/PopupHw.html

0

właśnie o to chodziło - wielkie dzięki za pomoc - zmieniłem w swoim menu "

menu.getPopupMenu().setLightWeightPopupEnabled(false); 

i menu jest cały czas na wieRZchu :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1