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.
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?
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
Zuletzt bearbeitet: