Klick weiterleiten.

barsiq

Mitglied
Hallo,

ich habe folgendes Problem zu lösen:
die 5 Buttons oben sind Menu-Elemente, die ein funktionelles Unterpanel öffnen. Das Panel "Telefonbuch" ist auf dem Screenshot gerade offen.

zZ. löst ein Klick außerhalb des offenen Panels das Schließen dessen.

Code:
public class DHPBasePopupMenuElement extends DHPBaseSimplyButton {

	private static final long serialVersionUID = 8457600803142193587L;
	
	//	Das Elternelement, der den Button enthält.
	private DHPBaseElement Parent;
	//	Der Inhalt des ausgeklappten PopupMenu
	private DHPBaseMenuPopup Inhalt;
	//	GlassPanel, das der Klick zum Schließen abfängt.
	private GlassPane Glass;
	//	Das ausgeklappte Fenster
	private PopupMenu Menu;
	
	/**
	 * Standardconstructor
	 * @param text	Buttonbeschrifftung
	 * @param parent	Vaterselement, der den Button enthält
	 * @param inhalt	Im offenem Fenster darzustellendes Panel
	 */
	public DHPBasePopupMenuElement(String text, DHPBaseElement parent, DHPBaseMenuPopup inhalt) {
		super(text, LABEL_MITTIG);
		setFarbSchema(DHPGUIConstants.LayoutColorSchema.getMenuButtonColorSchema());
		Parent = parent;
		Inhalt = inhalt;
		Menu = new PopupMenu(Inhalt);
		Glass = new GlassPane();
		//	GlassPane soll das offene Fenster schließen.
		Glass.addMouseListener(new MouseAdapter(){
			@Override
			public void mouseClicked(MouseEvent me) {
				Inhalt.closeParentFrame();
			}
		});
		//	Klick auf den SimplyButton
		addMouseListener(new MouseAdapter(){
			@Override
			public void mouseClicked(MouseEvent event) {
				super.mouseClicked(event);
				//	Sollte der Vater ausgeklappt sein, so wird er geschloßen.
				if (Parent.isOpened)
					Parent.closeFaltElement();
				//	GlassPane ausbauen
				DHPAsgard.getMainFrame().getLayeredPane().add(Glass);
				//	Position des auszuklappendes Fensters bestimmen
				int PosX = Parent.getX() + Parent.getWidth() - Menu.getWidth();
				if (PosX < 5) PosX = 5;
				Menu.setBounds(PosX, DHPGUIConstants.ME_HOEHE + 2);
				//	Das Fenster anzeigen
				DHPAsgard.getMainFrame().getLayeredPane().add(Menu);
				Menu.setVisible(true);
				Menu.hide();
				Menu.show();	
			}
		});
	}
}

Ich soll jetzt jedoch realisieren, daß wenn der Klick (beim offenen Panel) auf ein anderes Menuelement geht, das offene Panel geschloßen und der Klick weiterreicht werden soll.

Ich habe zwar in SwingUtilities Methoden gefunden, die mir erlauben das angeklickte Menuelement (mehr oder weniger) zu ermitteln.
Eine elegante Methode zum Weiterreichen fand ich leider nicht, zumal diese Menuelemente keine JButtons, sondern selbstgemachte JComponents (intern SimplyButtons genannt) sind, die natürlich einen ActionListener nicht haben, nur MouseListener.

Hat vielleicht jemand Ahnung oder Ansätze wie so was geht?
 

Anhänge

  • Clipboard01.jpg
    Clipboard01.jpg
    64,6 KB · Aufrufe: 45
Zuletzt bearbeitet:
Zurück