Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich hab ein Objekt obj das in einer anderen Klasse erstellt wurde. Das Objekt wurde dann an eine andere Klasse übergeben, in der ich auf einen JButton reagieren möchte. Wie kann ich das Objekt in die actionPerformed Methode übergeben?? Hab schon fast alles probiert...
...
JButton knopf = new JButton;
knopf.addActionListener(new ActionListener(){
public void actionPerformed ActionEvent e){
obj.irgendeineMethode();
}
});
Naja obj muss eben dort sichtbar sein. Hast du in der Klasse eine Instanzvariable angelegt? Oder ist diese innere anonyme Klasse die du hier zeigst in der gleichen Methoden/Konstruktor wie wo die das Objekt übergibst? Dann könnte
Code:
final
das sein wonach du suchst!
Code:
public Foo(final Object obj)
/edit: deinen anderen doppelten/unvollständigen Thread habe ich mal gelöscht!
Also das Objekt wird an den Konstruktor (von einer anderen Klasse) uebergeben. Instanzvariable hab ich angelegt.Der Code, den ich geschrieben hab, befindet sich im Konstruktor. Trotzdem hat die actionPerformed Methode dann keine Referenz mehr auf das Objekt???
Und du hast der Instanzvariablen auch das Objekt zugewiesen? Eieiei....mit mehr Code(und wenn es nur ein Beispiel ist) hätten wir die Sache mit einem Post beenden können, so wird es nur schwerer zu erklären:
- Heißt die Instanzvariable gleich wie der Parameter des Konstruktors? Dann könntest du auch Klassename.this.obj schreiben
- oder eben final vor den Parameter im Konstruktor schreiben so wie ich eben schon aufgezeigt habe!
class TheClass
{
private Object theObject;
public Constructor(Object theObject)
{
this.theObject = theObject;
.... anonym:
actionPerformed(...)
{
theObject.doSometing(); // Bezieht sich auf den Parameter, nicht die Instanzvariable!
Man könnte dann den Parameter einfach umbenennen, final machen, oder in der anonymen Klasse sowas wie
TheClass.this.theObject.doSometing();
machen
public class CocktailNeuPanel extends JPanel {
//Das ist das Objekt. EIne Refernz auf das Objekt besteht bereits!!
CocktailBar aktuelleCocktailBar;
public CocktailNeuPanel (CocktailBar aktuelleCocktailBar) {
this.aktuelleCocktailBar = aktuelleCocktailBar;
...
JButton speicherButton = new JButton("Speichern");
//SpeicherButton beim ActionListener anmelden
speicherButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
aktuelleCocktailBar.addCocktail(cockObj);
}
}
});
...
}