Aktion Listener in einer anderen Klasse - Java

7

es ist möglich, zwei Klassen zu haben, und in einem etwas wie

%Vor%

und in einem anderen

%Vor%

// und mehr Der Grund dafür ist, dass ich den Button (Swing) zum Action-Listener

trennen muss

wie kann ich?

Danke

    
user455318 13.02.2011, 17:00
quelle

5 Antworten

13

Es ist nicht nur möglich, diese beiden zu trennen, es wird auch empfohlen (siehe MVC-Muster - es geht sehr viel darum, Bildschirmsteuerelemente wie Schaltflächen und die Logik Ihres Programms zu trennen)

Der einfachste Weg, der mir in den Sinn kommt, ist, eine benannte Klasse zu schreiben, die ActionListener interface implementiert, etwa so:

%Vor%

Und fügen Sie es dann zu Ihren Tasten hinzu:

%Vor%     
Goran Jovic 13.02.2011, 17:06
quelle
6

Um zu antworten: "Mein Problem ist, dass der Action-Listener viele Variablen wie zum Beispiel swing hat. Wenn ich also in eine andere Klasse wechsle, habe ich Probleme damit"

Ihre Action-Listener-Klasse könnte einen Konstruktor haben, der einen Parameter vom Typ der View-Klasse akzeptiert:

%Vor%

Dann aus Ihrer Sicht:

%Vor%     
Matt Crinklaw-Vogt 13.02.2011 17:26
quelle
3

Sie können es leicht tun, indem Sie verschachtelte Klassen verwenden, aber ich denke, der beste Weg besteht darin, das Elternobjekt als Parameter an das Konstrukt des Objekts zu übergeben und es als Aktionshandler zu verwenden;

%Vor%     
Fareed Alnamrouti 12.03.2011 04:24
quelle
1

Ja, es kann gemacht werden. Es ist sehr einfach; in einer Klasse hast du deine Buttons, in der anderen Klasse musst du nur einen ActionListener implementieren und einfach dein // cmd machen um die Funktion dieser Schaltfläche zu trennen. Um dies zu tun, müssen Sie e.getActionCommand (). Equals (buttonActionCommand) verwenden. Beispielcode:

%Vor%

Um diesen Listener auf Ihrer Schaltfläche hinzuzufügen, tun Sie einfach:

%Vor%     
Alejandro 13.02.2011 17:25
quelle
1

Es ist ein bisschen off topic, aber Sie sollten definitiv nicht den Operator == verwenden, um String s zu vergleichen, wie Sie in dieser Zeile zu tun scheinen:

%Vor%

Dies liegt daran, dass String s Zeiger und keine tatsächlichen Werte sind und Sie möglicherweise unerwartetes Verhalten mit dem Operator == erhalten. Verwenden Sie stattdessen die Methode someString.equals(otherString) . Und auch

%Vor%

ist viel besser als andersherum

%Vor%

, weil Sie im ersten Beispiel vermeiden, eine NullPointerException zu erhalten, wenn stringVariable null ist. Es gibt nur falsch zurück.

    
Oskar Lund 16.02.2011 10:54
quelle

Tags und Links