Bist du denn auf das Verwenden der inneren Klassen angewiesen? Ich kann ja sonst mal versuchen, dir in kurzen Worten zu beschreiben, wie ich die Listener verwende...
Also, meine Klasse5 würde den ActionListener implementieren.
[code]
public class Klasse5 implements ActionListener
[/code]
Und den Button würde ich quasi "an mich selbst" hängen:
[code]
addBtn.addActionListener(this);
[/code]
So, da Klasse5 den ActionListener implementiert, bin ich gezwungen, auch die actionPerformed-Methode zu implementieren, was bei mir etwa so aussähe:
[code=Java]
public void actionPerformed(final ActionEvent e)
{
Object source = e.getSource();
if (source == addBtn)
{
...
}
[/code]
Und bei den Pünktchen machst du nun genau das, was deine innere Klasse bisher gemacht hätte.
Der Vorteil in meinen Augen ist, dass du nun auf alle Instanzvariablen der Klasse5 Zugriff hast.
Und über die Abfrage der Source, die dieses ActionEvent ausgelöst hat, könntest du in dieser actionPerformed-Methode auch weitere Komponenten des Panels unterbringen.
Ups, ich hoffe, das war halbwegs verständlich...