ActionEvent richtig anbringen

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Moin ,

ich habe eine Klasse Menu. Hier bekommen alle Item einen ActionListener zugewiesen.


Item1.addActionListener(this);

Die Events sollen aber in einer anderen Klasse abgefangen werden,
d.h. Ich habe in der Klasse Menu eine leere Methode Action Listener .


Das Menu wird nun im Hauptframe instantiiert und hier möchte ich
eigentlich erst auf die Events reagieren.


Wie gehe ich vor:

Code:
public void actionPerformed( ActionEvent e) {
			
final Object source = e.getSource(); 

if ( source == menu.item1 )
//tue dies
else if ( source == menu.item2 )
tue das

Leider kommen die Events nicht wirklich im Hauptframe an ...


Wie komme ich also in meinem Frame auf die JMenuItems des Menus der anderen Klasse heran ?


Vielen Dank
 
wenn das JFrame der ActionListener ist,
dann musst du
Item1.addActionListener(jFrame);
registrieren,
jFrame ist eine Referenz auf das JFrame, wo immer du die auch herbekommst
 
Hallo,

also ich erzeuge im HauptFrame das Menu:

Menue menu = new Menue();


dann könnte ich alle ActionListener im Hauptframe setzen

menu.Item1.addActionListener(this);


Das würde ich aber ungern so machen . Ich denke es müßte wohl auch besser gehen.

Dein Ansatz wäre in der Klasse Menue dem ActionListener eine Instanz des HaptMenüs zu
übergeben ?

Das geht nicht. Mein HauptMenü darf nur einmal existieren.


In der Klasse Menue ist

MainFrame frame = new MainFrame() ; also ausgeschossen .

Oder habe ich Dich falsch verstanden ?
 
ein neues JFrame zu erstellen wäre in der Tat kontraproduktiv 😉

entweder den von dir als unschön bezeichneten Weg
menu.Item1.addActionListener(this);

oder wie gesagt eine Referenz auf das EINE JFrame an das Menu mitübergeben,
so dass dort die ActionListener auf das JFrame registriert werden können,

auch nicht super schön,
aber wie du es drehst oder wendest:
irgendwann muss irgendwo mal
Item1.addActionListener(jFrame);
stehen,

sonst kann das JFrame nicht auf Events von Item1 hören,
ist doch logisch
 
@Slater was funktioiert ist Folgendes:


MainMenue menu;


dann an den Konstruktor übergeben:


public Menue(MainMeinue menu)

this.menu = menu;

............


und im MainMenue

Menue menu = new Menue(this);

War das so von Dir gemeint?

-----------------------------------------------------

Wenn jedes Item seine eigene Action behandelt , wird mir das auch nicht weiterhelfen, da die Actions
zum Navigieren der Panels im MainFrame gedacht sind.
 
> War das so von Dir gemeint?

...

es geht nicht um Meinungen, sondern um Lösungen,
wenn das, was immer ich deiner Meinung nach gemeint habe,
dein Problem nicht löst, dann weiter konkret am Problem arbeiten,
nicht zum zweiten Mal meine Meinung interpretieren 😉
 
how how how,

ich habe jetzt 3 verschiedene Lösungen. Weiss nur noch nicht welche ich nehme. Danke Dir erst einmal 🙂
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben