Zasłanianie menu przez inne komponenty [SWING]

Zasłanianie menu przez inne komponenty [SWING]
GR
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 12 lat
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ę:

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

SM
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 14 lat
0

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

Kopiuj
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 "

Kopiuj
menu.getPopupMenu().setLightWeightPopupEnabled(false); 

i menu jest cały czas na wieRZchu :)

edytowany 2x, ostatnio: madmike

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.