| 

.NET C# Java Javascript Exception

1
Hallo CodeKicker,

Ich habe ein Problem mit einem einfach Programm.

Folgendes:
Es gibt 2 Fenster. In Fenster A ist ein Button (Add) implementiert welcher über einen ActionListener Fenster B aufruft. Hier macht der Benutzer 2 Eingaben.
Problem ist. Ich kann keine konkreten Referenzen setzen da nicht klar ist von welchem Fenster-Objekt das Ereignis kommt. Also von woher das 2.Fenster aufgerufen wurde. Es ist im Programm mehrer Objekte von Fenster A Instanziert werden.

Ein abgespecktes Codebeispiel zum Verständnis:

public class GUI_Tapped {
public JPanel pnlMain;
public JButton btn Add = new JButton("Hinzufügen");

GUI_Tapped() {
ActionListener alAdd = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
GUI_AddNewStandart Add = new GUI_AddNewStandart(/*Hier fehlt die Referenz*/);
}
};
pnlMain = new JPanel();
btnAdd.addActionListener(this.alAdd);
pnlMain.add(btnAdd);
pnlMain.pack();
}


Und nun das zweite Fenster:

public class GUI_AddNewStandart {
JFrame Main = new JFrame("Standartwert hinzufügen");

JButton btnAdd = new JButton("Hinzufügen");
GUI_Tapped Tab;

public GUI_AddNewStandart(GUI_Tapped Tab) {
this.Tab = Tab;

Main.setLayout(new BoxLayout(Main, BoxLayout.Y_AXIS));
}
}


Meine Frage jetzt:

Wie kriege ich aus dem Parameter arg0 welches den Button darstellt den Namen der Klasse?
30.06.2014
Chase 35 4
1 Antwort
1
Hallo,

du kannst in einer anonymen inneren Klassen per [ÄußereKlasse].this auf die Instanz der äußeren Klasse zugreifen. In deinem Fall würde das also so aussehen:

ActionListener alAdd = new ActionListener() {   
@Override
public void actionPerformed(ActionEvent arg0) {
GUI_AddNewStandart Add = new GUI_AddNewStandart(GUI_Tapped.this);
}
};
09.07.2014
LunaticShade 507 4

Stelle deine Java-Frage jetzt!