Java ActionListener wohin?

Hallo,
ich versuche gerade eine Klasse zu schreiben mit der man auf einfachen Wege ein Fenster machen kann.
Es funktioniert schon recht gut, bis auf die Sache mit dem ActionListener.
Ich möchte s nämlich so machen, dass der ActionListener gleich in dieser Klasse mit drinnen ist. Aber wie soll mann dann in die Methode actionPerformed etw. hineinschreiben können???

Code:
package window;

import java.awt.FlowLayout;

import javax.swing.*;

public class Window extends JFrame {

    /***************************************************************************
     * Globale Variablen
     **************************************************************************/

    private static final long serialVersionUID = 1L;

    /***************************************************************************
     * Überladene Konstruktoren
     **************************************************************************/

    public Window() {
	super();
	initialize(500, 500, false);
    }

    public Window(final String title) {
	super(title);
	initialize(500, 500, false);
    }

    public Window(final String title, final int height, final int width) {
	super(title);
	initialize(height, width, false);
    }

    public Window(final String title, final int height, final int width,
	    final boolean visible) {
	super(title);
	initialize(height, width, visible);
    }

    /***************************************************************************
     * Ende der Konstruktoren
     **************************************************************************/

    /***************************************************************************
     * Funktion für die Initialisierung des Fensters
     **************************************************************************/
    private void initialize(final int height, final int width,
	    final boolean visible) {
	setSize(width, height);
	setVisible(visible);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	getContentPane().setLayout(new FlowLayout());
    }

    /***************************************************************************
     * Funktionen für Buttons
     **************************************************************************/

    public Object CreateButton() {
	final JButton button = new JButton();
	getContentPane().add(button);
	setVisible(true);
	return button;
    }

    public Object CreateButton(final String text) {
	final JButton button = new JButton(text);
	getContentPane().add(button);
	setVisible(true);
	return button;
    }

}
 
Ich habe den Code jetzt nur fleuchtig durchgelesen. Das mit den ActionListenern realisierst du mit Anonymen inneren Klassen.
Code:
button.addActionListener( new ActionListener() { 
  public void actionPerformed( ActionEvent e ) { 
    //Code 
  } 
} );


Edit: Du koenntest es auch so gemeint haben:
Code:
public class MyClass implements ActionListener
{
     //...
     public void actionPerformed(ActionEvent e)
     {
            //code
     }
     JButton jb = new JButton();
     jb.addActionListener(this);
}
 
Ich hab es eigent. so gemeint dass ich von einer anderen Klasse einen button erstelle und der dann gleich den action listener hat, ich aber den code für actionperformed in der klasse festlege in der ich auch den button erstelle. ich aber in der klasse nicht noch extra ein actionlistener object erstellen muss.

Man könnte es vllt mit einer abstarkten Klasse machen, muss bei einer abstrakten Klasse jede Methode abstrakt sein?
 
Tut mir leid, ich verstehe noch nicht ganz was du willst.

Klasse1 erstellt einen Button mit ActionListener der Klasse2 uebergeben wird,
und in Klasse2 willst du den Code fuer actionPerformed festlegen?
 
Du leitest deine Klasse vom Interface "ActionListener" ab und kannst dann ueber eine Funktion "public void actionPerformed(ActionEvent event)" deine Actions bestimmen:

Code:
public class Beispiel implements ActionListener {

  public static void main(String[] args) {
    Button b=new Button("Beschriftung");
    b.addActionListener(this);
  }
  
  public void actionPerformed(ActionEvent event) {
    // z.b. Abfrage via event.getActionCommand()
  }

}

Letztendlich kannst du auch eine Klasse schreiben, die nur vom ActionListener abgeleitet wird, eine Instanz von ihr erstellen und diese Instanz dann uebergeben. Dazu könntest du dir nochmal dieses Beispiel anschauen: http://gd.tuwien.ac.at/languages/java/GoToJava2/html/k100192.html#ixa101938
 
Zurück
Oben