Breite für JPopupMenu festlegen, Höhe variabel

Maike82

Grünschnabel
Hallo,

ich habe ein Panel, in dem sich zwei horizontal nebeneinander angeordnete Buttons befinden (GridBagLayout). Nun möchte ich nach Klick auf den rechten Button ein Popup Menü öffnen. Dieses soll genauso breit sein wie die beiden Buttons und soll genau unter den Buttons angezeigt werden. Die Höhe des JPopup Menus soll sich je nach Anzeil Einträge (dynamisch) anpassen. Wie kann ich NUR die Breite für das Popup Menu festlegen? Mit setPreferredSize() muss ich sowohl Breite als auch Höhe angeben... dies funktioniert also nicht, da ich die Höhe nicht kenne und auch keinen festen Werte angeben will... Kennt jemand eine Lösung?

Herzlichen Dank.
 
Hallo du,

hey du soweit ich weiß gibtes die Funktionen

setMinimumSize(Dimension d);
setMaximumSize(Dimension d);

bei JPopUpMenu, wenn due die Dimensions auf gleich breite aber unterschiedliche Höhe setzt sollte das doch klappen oder?
 
Danke für deine Antwort, aber setMinimumSize und setMaximumSize habe ich auch schon ausprobiert, hat jedoch keine Auswirkung. Das popup immer gleich breit/hoch gezeichnet, egal ob ich diese Größen setze oder nicht. Es funktioniert nur mit setPreferredSize... im Moment habe ich eine feste Höhe angegeben, was ich jedoch nicht besonders schön finde... naja... vielleicht finde ich noch eine andere Lösung.
 
Danke... aber alles schon versucht... das Problem ist immer noch, dass ich einen Wert für die Höhe festlegen muss... auch mit setPopupSize... :(
 
Dann versuch es doch mal so. Wenn das Menu komplett aufgebaut ist, versuch es so
Code:
menu.setPopupSize(500, menu.getPreferredSize().height);

Und wenn dynamisch Elemente hinzugefügt werden versuch es so.

Java:
menu.addContainerListener(new ContainerListener(){

	public void componentAdded(ContainerEvent e) {
		menu.setPopupSize(500, menu.getPreferredSize().height);
	}
	public void componentRemoved(ContainerEvent e) {
		menu.setPopupSize(500, menu.getPreferredSize().height);
	}
	
});

MFG

zEriX
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank für die vielen Tipps... an diese Lösung habe ich auch schon gedacht und gerade nochmal ausprobiert. Das Popup hat jedoch anfangs noch keine Höhe (Höhe ist 0), sondern erst wenn es sich das erste Mal geöffnet hat (also wenn es zum ersten Mal gezeichnet wird). Ich könnte die Breite nach dem ersten Öffnen setzen, jedoch sieht man dann einen Sprung, weil das Popup anfangs kleiner ist...
 
Zurück