Referenz über MenuItem aus ActionListener auf das Objekt

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo erstmal,

also mein Problem stellt sich wie folgt dar:
Ich habe in meiner GUI eine MenuBar und meinen zugehörigen ActionListener in einer
seperaten Klasse.
Um nun im ActionListener eine Referenz auf das Frame Objekt zu bekommen
benutze ich bei einem button die getParent() Methode und hangle mich solange hoch bis
ich die Referenz habe, versuche ich das jedoch von einem MenuItem, dann bekomme ich lediglich durch
die erste Ausführung von getParent eine Referenz auf ein JPopUp Item und bei einem weiter getParent()-aufruf eine Null-Referenz.

Weiß jmd wie ich von einem MenuItem auf das Frame Objekt komme?
Wäre sehr dankbar über einen Vorschlag, habe schon gesucht aber nichts gefunden was wirklich eine Lösung dafür wäre.

Gruß
 

Sky

Top Contributor
hä ? Was hast Du überhaupt vor ??

Am besten: Übergib beim Erstellen deiner ActionListener-Klasse die Referenz und fertig.
 

m@nu

Bekanntes Mitglied
schonmal daran gedacht deine actionlistener als private klasse in deinem frame zu implementieren?

Code:
public class MeinFrame extends JFrame {
  // ...

  private void initMenu() {
    // ...
    MenuActionListener menuActionListener = new MenuActionListener();
    item1.addActionListener(menuActionListener);
    item2.addActionListener(menuActionListener);
  }

  // ... 

  private class MenuActionListener implements ActionListener {
    public void actionPerformed(ActionEvent ae) {
      // ...
    }
  }
}

mit der privaten klasse hast du den vorteil, dass du per "MeinFrame.this" direkt die referenz auf deine frame-klasse hast, resp. auf alle instanzvariabeln der übergeordneten klasse zugreifen kannst...
 
G

Guest

Gast
sky80 hat gesagt.:
hä ? Was hast Du überhaupt vor ??

Am besten: Übergib beim Erstellen deiner ActionListener-Klasse die Referenz und fertig.

Eine Referenz übergeben? Wie soll denn das funktionieren? Ich muss ja die ActionListener Schnittstelle implementieren... da kann ich nicht einfach den Methodenkopf ändern und noch nen weiteren Parameter übergeben... wenns so leicht wäre würde ich mir sicherlich nicht so nen komplizierten Weg ausdenken.

m@nu hat gesagt.:
schonmal daran gedacht deine actionlistener als private klasse in deinem frame zu implementieren?

ja klar... das wäre natürlich ne Lösung, aber ich hatte mir eigentlich vorgenommen die GUI/Ausführungscode von den ActionListenern zu trennen der Übersicht halber.
Das wäre halt der Weg den ich beschreiten würde wenn nichts anderes funktioniert, aber es muss ja einen Weg geben der das auch bei seperater ActionListener Klasse zulässt ?!
 

m@nu

Bekanntes Mitglied
so wie dir das sky80 beschrieben hat...

Code:
public class MenuActionListener implements ActionListener {

  /* Referenzen: */
  private JFrame frameReferenece;

  // Konstruktoren ---------------------------------------------------------
  public MenuActionListener(JFrame frameReference) {
    this.frameReference = frameReference;
  }

  // ActionListener-API ----------------------------------------------------
  public void actionPerformed(ActionEvent ae) {
    // Beispiel "Zugriff auf Referenz":
    System.out.println(this.frameReference.getTitle());
    // ...
  }
}

Code:
public class MeinFrame extends JFrame {
  // ...
  private void initMenu() {
    MenuActionListener listener = new MenuActionListener(this);
    // ...
  }
  // ...
}

alles klar? 8)
 
G

Gast

Gast
:roll:

und das funkt? :) das klingt fast zu einfach ... aber danke ! werds gleich mal probieren!
 

m@nu

Bekanntes Mitglied
Gast hat gesagt.:
:roll:

und das funkt? :)

*rofl* 'türlich funkt das 8) ... das ist das, was man eine referenz nennt ;)

kein problem :) (hoffe du nimmst mir diesen klugscheisser post hier nicht übel ;) )
 
G

Gast

Gast
Ja LOL, ich wollte mein Erstaunen über die Einfachheit dieser Vorgehensweise zum Ausdruck bringen *G* nee... n bisschen drüber lustig machen darf schon sein :) Mir ist das im Nachhinein selbst äußerst peinlich, denn eigentlich hätte ich da auch selbst drauf kommen können...
Aber noch schlimmer finde ich das mein Prof diesen Weg "verschweigt" denn das ist doch bedeutend simpler als dieser getParent() Mist um über die Panes auf das JFrame Objekt zu kommen ...
 

m@nu

Bekanntes Mitglied
es gibt immer verschiedene wege... per getParent() is halt einfach relativ performance-lastig wenn du das ganze z.b. von einem JPanel aus machst, welcher sich irgendwo in den tiefsten tiefen deiner GUI befindet. (nur als beispiel)

vielleicht hat er das ja absichtlich verschwiegen :)
und sonst: gib's ihm! 8)

hehe, manchmal brauchts halt einen anstoss wenn man den wald vor lauter bäumen nicht mehr sieht... hatte ich auch schon einige male... im nachhinein denkt man dann immer: "mein gott! wär' ja so einfach! wieso hab' ich das nicht gesehen!?" ...
auf jedenfall bleiben einem dann solche dinge um so mehr im gedächnis :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Swing JTable wird nicht über zurückegebene Referenz geaddet.Wieso nicht? AWT, Swing, JavaFX & SWT 5
U Swing NullPointerException trotz Referenz auf Textfield & Button AWT, Swing, JavaFX & SWT 6
Rudolf Referenz einer angeklickten Row einer TableView AWT, Swing, JavaFX & SWT 3
P Swing Wie bekomme ich eine Referenz auf ein Objekt das im EDT erzeugt wird? Und anderes... AWT, Swing, JavaFX & SWT 8
G Verliere Referenz von Toolbar bei mehreren Fenster AWT, Swing, JavaFX & SWT 3
V Referenz auf das JFrame? AWT, Swing, JavaFX & SWT 2
Y Problem mit der Referenz eines Graphics-Objekts AWT, Swing, JavaFX & SWT 5
G Referenz auf Popupmenü AWT, Swing, JavaFX & SWT 2
S [AWT] Aktuelle Version, bzw. Referenz? AWT, Swing, JavaFX & SWT 3
I JTextfield senden über Enter AWT, Swing, JavaFX & SWT 1
T Scene wechseln über ManuItem AWT, Swing, JavaFX & SWT 7
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
A Layoutwechsel über RadioButtons AWT, Swing, JavaFX & SWT 3
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Performance / ImageView in TableView über TimeLine AWT, Swing, JavaFX & SWT 1
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
J Spielfelder auch über die Tastatureingabe (1…9) ansteuern (Tic Tac Toe) AWT, Swing, JavaFX & SWT 2
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
C Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen AWT, Swing, JavaFX & SWT 4
G LayoutManager Panels anordnen über Schleifenvariablen AWT, Swing, JavaFX & SWT 7
F Verzeichnis über GUI erstellen AWT, Swing, JavaFX & SWT 2
T GUI über Tastatur bedienen AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
L JavaFX TreeView Edit Mode über F2 AWT, Swing, JavaFX & SWT 13
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
C JavaFX ScrollPane schießt über das Ziel hinaus... AWT, Swing, JavaFX & SWT 1
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
K über Button andere Java Klasse aufrufen AWT, Swing, JavaFX & SWT 15
T .jar-Datei lässt sich unflexibler ausführen als über die IDE AWT, Swing, JavaFX & SWT 11
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
L JavaFX Hover Effekt über das Parent Element AWT, Swing, JavaFX & SWT 4
C JavaFX GUI - Entscheidung über Framework AWT, Swing, JavaFX & SWT 4
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
Augenblau JavaFX Externe Schriftart über CSS ansprechen und zuweisen AWT, Swing, JavaFX & SWT 5
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
O JTextfield wird über'drawed'.. AWT, Swing, JavaFX & SWT 6
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
kaoZ Swing JFrame lässt sich nicht über dispose() abbauen AWT, Swing, JavaFX & SWT 0
P Vorteile von Tooltip nutzen (wird über allen anderen Objekten angezeigt) AWT, Swing, JavaFX & SWT 3
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
B Swing Borderlayout East über North AWT, Swing, JavaFX & SWT 5
D Swing Letzte Zeile einer JTable nicht über RowSorter sotieren AWT, Swing, JavaFX & SWT 2
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
K GUI Elemente über eine separate Textdatei beschriften? AWT, Swing, JavaFX & SWT 4
A Bild über Imageviewer auf GUI anzeigen AWT, Swing, JavaFX & SWT 3
K 2D-Grafik Kontrastanpassung über einen JSlider AWT, Swing, JavaFX & SWT 2
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
L Button über/auf JTextField AWT, Swing, JavaFX & SWT 5
D JTextField über ein Game AWT, Swing, JavaFX & SWT 11
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
R JTextField mit abgerundeten Ecken - Geht über Grenze hinaus AWT, Swing, JavaFX & SWT 4
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
P Öffnen, Speichern von Dat. über DialogBoxen AWT, Swing, JavaFX & SWT 10
R Bewglichen Rahmen über einem Bild AWT, Swing, JavaFX & SWT 3
P Listenelemente über Checkbox löschen AWT, Swing, JavaFX & SWT 6
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
S SWT Anzeigen einer lokalen HTML-Seite im Browser Widget über RAP nicht möglich AWT, Swing, JavaFX & SWT 3
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
C Linien über GridLayout zeichnen AWT, Swing, JavaFX & SWT 3
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
K Swing JButton über JLabel AWT, Swing, JavaFX & SWT 6
S AWT Skalieren von Polygon über Area klappt nicht AWT, Swing, JavaFX & SWT 4
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
L LayoutManager Componenten über verfügbaren Platz strecken AWT, Swing, JavaFX & SWT 7
C Java-applikation über Fullscreen AWT, Swing, JavaFX & SWT 4
F Panels über buttons zu anderen Panels hinzufügen AWT, Swing, JavaFX & SWT 2
S JTable Filter nach Wort oder Wortteil über ganze Tabelle AWT, Swing, JavaFX & SWT 5
M Hover-Farbe über Hintergrundfarbe legen AWT, Swing, JavaFX & SWT 3
A Swing Gleichmäßige Verteilung der Tabellenzeilen über den gesammten Tabellenbereich AWT, Swing, JavaFX & SWT 5
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
S JButton -> Text über Icon AWT, Swing, JavaFX & SWT 4
P Swing Componente über Rahmen hinaus zeichnen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben