popup- Menue

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hallo,


ich hab noch mal eine Frage zum Popup- Menü von JFreeChart, und zwar habe ich unten auf meinem JFreeChart- Panel u.a. Buttons plaziert (Speichern, Drucken) und wenn ich diese Button drücke, sollte das gleiche passieren wie wenn ich die rechte Maustaste -> Speichern/Drucken drücke,

Ich weiß jetzt nicht, wie ich an das Popup- Menü herankomme, In meinem DemoMultipleAxis1- Code ist nichts drinnen über popup- Menüs?

Vielleicht hat ja jemand einen Tipp,



PS:

Ich habe gerade gesehen, dass ich mit

Code:
chartPanel[0].getPopupMenu();
an das PopupMenü rankomme, aber ist es möglich, meine ButtonEvents irgendwie zum PopupMenü zu leiten?

lg und herzlichen Dank für etwaiige Antworten,
 

PollerJava

Top Contributor
Also ich bekomm mit


Code:
JPopupMenu z = chartPanel[x].getPopupMenu();

ein JPopupMenu und kann das ganze aber nicht auf "PopupMenu" casten -> die Klasse "PopupMenu" enhält ja die Methode getItem(int Index),

Wie könnte ich das machen, damit ich an die Methoden von PopupMenu herankomme,

Bien für jeden Hinweis dankbar,,


herzlichen dank!!

lg
 

mfernau

Bekanntes Mitglied
Du kannst in diesem Fall mit
Code:
z.getComponent(n)
arbeiten. Das ist dann ein Component-Objekt das Du auf ein JMenuItem casten kannst (sofern es eines ist) um damit entsprechend zu arbeiten

hth & Gruß,
Martin
 

PollerJava

Top Contributor
Das versteh ich jetzt nicht, wie du das meinst,

Ich habs jetzt mal probiert aber ohne Erfolg:

Code:
JMenuItem  mi = ((JMenuItem)z.getComponent(0));

Wie meinst Du das genau,

Mein Problem ist ja, dass ich einfach mit einem Buttonclick simulieren will genauso wie wennn ich mit der Maus auf einen Popup- Menü- Eintrag klicke.

Ist das irgendwie möglich?

lg
 

mfernau

Bekanntes Mitglied
Nur damit ich das richtig verstehe...
Die auszuführende Aktion macht JFreeChart schon für dich, ja? Nämlich wenn Du in dem Kontextmenu (das beim Rechtsklick mit der Maus über dem Chart "aufpoppt") einen bestimmten Menüpunkt anklickst?
Und Du möchtest jetzt quasi einen Button noch im direkten Sichtbereich plazieren (z.B. unten im Panel) der genau diese Aktion startet, als hättest Du im Kontextmenü diesen Menüpunkt angeklickt?
Dann bist Du auf dem richtigen Weg:
Code:
JMenuItem  mi = ((JMenuItem)z.getComponent(0));
mi.doClick();

Ein JMenuItem ist nichts weiter als eine Erweiterung von AbstractButton, auf dem Du die Aktion "doClick" ausführen kannst, die ihrerseits wiederum dieselbe Aktion zurfolge hat, als hättest Du diesen "Button" manuell angeklickt.

hth,
Martin

PS: Was Du natürlich kennen musst ist den Index, an der sich dieser Button im PopupMenu befindet. Hier hast Du ja nur getComponent(0) geschrieben.
 

PollerJava

Top Contributor
mfernau hat gesagt.:
PS: Was Du natürlich kennen musst ist den Index, an der sich dieser Button im PopupMenu befindet. Hier hast Du ja nur getComponent(0) geschrieben.

ich hab jetzt probiert, auf den zweiten Eintrag im PopupMenü zuzugreifen aber ich bekomme eine NPE obwohl mein Popup- Menü 10 Einträge hat:

Code:
mi = (JMenuItem)chartPanel[x].getPopupMenu().getComponent(1);  // zweiter AbstractButton im Popupmenü betätigen-> NPE

Hat da jemand eine Erklärung??

herzlichen dank für die antworten!!




lgALLES ZURÜCK: auf den seperator kann man halt nicht zugreifen
 

PollerJava

Top Contributor
Es gibt zwar getParent():

Code:
(JMenuItem)chartPanel[x].getPopupMenu().getComponent(6).getParent().getComponent(0);

aber da komm ich nicht zu dem Untermenü des Popup- Menüs sondern bleibe auf der gleichen Ebene.

Hat da jemand eine Idee, wäre sehr dankbar dafür!!

lg
 

mfernau

Bekanntes Mitglied
Bei was bekommst Du eine NullPointerException? Beim Zugriff auf das Untermenü oder beim Zugriff auf eine Komponente dieses Untermenüs?

Vielleicht postest Du mal den Codeausschnitt hier hinein und markierst die Stelle an der die Exception auftritt
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben