Hallo Leute!
Ich stehe seit einiger Zeit vor einem mehr oder minder großen Problem:
Ich habe mir ein kleines Fenster aufgebaut, das ein Menu mit zwei Unterpunkten enthält, eine Checkbox, zwei normale Buttons und ein Label.
Wenn ich die checkBox aktiviere, legt sich ein GlassPane auf mein Frame. So habe ich eine HilfeEinblendung im Stile von Word realisiert (auf Click). Nur leider weiß ich nicht, warum das bei den MenuItems nicht funktioniert!
Vielleicht kann mir ja Jemand bei diesem Problem helfen!?!
Hier ein bisschen Code zur Verdeutlichung:
Bis hierhin funktioniert die Sache. Ich kann das Menu öffnen, obwohl ich das GlassPane aktiviert habe. Aber das hier geht irgendwie nicht mehr:
Ich stehe seit einiger Zeit vor einem mehr oder minder großen Problem:
Ich habe mir ein kleines Fenster aufgebaut, das ein Menu mit zwei Unterpunkten enthält, eine Checkbox, zwei normale Buttons und ein Label.
Wenn ich die checkBox aktiviere, legt sich ein GlassPane auf mein Frame. So habe ich eine HilfeEinblendung im Stile von Word realisiert (auf Click). Nur leider weiß ich nicht, warum das bei den MenuItems nicht funktioniert!
Vielleicht kann mir ja Jemand bei diesem Problem helfen!?!
Hier ein bisschen Code zur Verdeutlichung:
Code:
Point glassPanePoint = e.getPoint();
Container container = contentPane;
Point containerPoint = SwingUtilities.convertPoint(
glassPane,
glassPanePoint,
contentPane);
Container menuBarContainer = menuBar;
Point barContainerPoint = SwingUtilities.convertPoint(
glassPane,
glassPanePoint,
menuBar);
Container menuContainer = menu;
Point menuContainerPoint = SwingUtilities.convertPoint(
glassPane,
glassPanePoint,
menu);
if (containerPoint.y < 0)
{ // we're not in the content pane
if (containerPoint.y + menuBar.getHeight() >= 0)
{ //The mouse event is over the menu bar.
//Make it possible to open the Menus to select menuItems
Component component =
SwingUtilities.getDeepestComponentAt(
menuBar,
barContainerPoint.x,
barContainerPoint.y);
if((component!=null)&&(component.equals(menu)))
{
Point componentPoint = SwingUtilities.convertPoint(
glassPane,
glassPanePoint,
component);
component.dispatchEvent(new MouseEvent(component,
e.getID(),
e.getWhen(),
e.getModifiers(),
componentPoint.x,
componentPoint.y,
e.getClickCount(),
e.isPopupTrigger()));
Bis hierhin funktioniert die Sache. Ich kann das Menu öffnen, obwohl ich das GlassPane aktiviert habe. Aber das hier geht irgendwie nicht mehr:
Code:
//Second Time to differ the several menuItems
Component component2 =
SwingUtilities.getDeepestComponentAt(
menu,
menuContainerPoint.x,
menuContainerPoint.y);
Point componentPoint2 = SwingUtilities.convertPoint(
glassPane,
glassPanePoint,
component2);
component2.dispatchEvent(new MouseEvent(component,
e.getID(),
e.getWhen(),
e.getModifiers(),
componentPoint2.x,
componentPoint2.y,
e.getClickCount(),
e.isPopupTrigger()));
if((component2!=null)&&(component2.equals(menuItem1)))
{
makeHelp("erstes MenuItem","Hier würde jetzt eine nähere Erläuterung zu diesem Punkt kommen", true);
}