ActionListener auslagern

TJava

Bekanntes Mitglied
Hallo ich versuche das Label in der View zu ändern und habe dafür die Action Methode ausgelagert in eine eigene Java Datei. Leider erkennt er dort den btnAnfuegen gar nicht. Wie macht man sowas?
Habe beide Klassen angehängt.


Java:
package view;

import java.awt.*;
import java.awt.event.*;

class LoginListener implements ActionListener {

	public void actionPerformed(ActionEvent e) {
		Object quelle = e.getSource();
		if (quelle.equals(btnAnfuegen)) {

			txtFeld1.setText("Hallo");

		}

	}

}


Java:
package view;



import java.awt.*;
import java.awt.event.*;

public class Login extends Frame {
	LoginListener LogListener;

	TextField txtFeld1;

	Button btnAnzeigen;

	public static void main(String[] args) {
		Login f = new Login();
		f.setVisible(true);
	}

	public Login() {
		super("Fenster mit Textfeldern");

		setBounds(100, 100, 480, 205);
		setLayout(null);

		LogListener = new LoginListener();

		txtFeld1 = new TextField(" Start");
		txtFeld1.setBounds(12, 23, 100, 100);
		add(txtFeld1);

		btnAnzeigen = new Button("Login");
		btnAnzeigen.setBounds(360, 80, 100, 23);
		btnAnzeigen.addActionListener(LogListener);
		add(btnAnzeigen);

		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				System.exit(0);
			}
		});

	}
 
Zuletzt bearbeitet von einem Moderator:
T

Tomate_Salat

Gast
EDIT die Java-Tags hat ja SlaterB jz im Originalpost eingefügt

Hab das mal in Java-Tags kopiert. Zunächst: Referenzen/Variablen fangen mit kleinem buchstaben an: logListener.

Zu deinem Problem: natürlich kennt der listener [c]btnAnfuegen[/c] nicht. Woher auch? Also entweder du übergibst eine Referenz (z.B. beim Aufrufen des Konstruktors) oder du schreibst für jeden Button einen eigenen Listener.

MFG

Tomate_Salat
 

TJava

Bekanntes Mitglied
mmh geht leider noch nicht

Code:
public LoginListener(Button btnAnzeigen, TextField txtFeld1) {
		// TODO Auto-generated constructor stub

	}

	public void actionPerformed(ActionEvent e) {
		Object quelle = e.getSource();
		if (quelle.equals(btnAnzeigen)) {
			txtFeld1.setText("Hallo");

		}

Code:
logListener = new LoginListener(btnAnzeigen,txtFeld1);

		txtFeld1 = new TextField(" Start");
		txtFeld1.setBounds(12, 23, 100, 100);
		add(txtFeld1);

		btnAnzeigen = new Button("Login");
		btnAnzeigen.setBounds(360, 80, 100, 23);
		btnAnzeigen.addActionL
 
T

Tomate_Salat

Gast
wieso hast du die java-Tags durch code-tags ersetzt? oO

Du solltest dir erstmal Gedanken über die Sichtbarkeit/Gültigkeiten von deinen Variablen/Parametern machen: Galileo Computing :: Java ist auch eine Insel – 2.4 Blöcke, Initialisierung und Sichtbarkeit am besten du schaust auch noch ein wenig unter Google.

Mit einem GUI anzufangen, wenn du noch schwierigkeiten mit den Grundlagen hast, halte ich für keine gute Idee.

Java:
private Button btnAnzeigen;
private TextField txtField1;

        public LoginListener(Button btnAnzeigen, TextField txtFeld1) {
                 this.btnAnzeigen = btnAnzeigen;
                 this.txtField1 = txtField1;
	}

	public void actionPerformed(ActionEvent e) {
		Object quelle = e.getSource();
		if (quelle.equals(btnAnzeigen)) {
			txtFeld1.setText("Hallo");

		}

so sollte es funktionieren (ungetestet). Aber wie gesagt: bleibe erstmal bei Konsolenanwendungen und lerne Grundlagen.
 

TJava

Bekanntes Mitglied
OK jetzt geht es der Actionevent wird in einer eigenen Klasse ausgeführt, nur wie gebe ich jetzt wieder an die GUI die Beschriftung zurück? Muss ich da eine extra Methode schreiben oder gibt es auch einen anderen weg.

Login txtFeld1.setText("Hallo");
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
[java=11]
if (quelle.equals(btnAnzeigen)) {
[/code]
anstatt equals würde ich hier [c]==[/c] nehmen:
[java=11]
if (quelle == btnAnzeigen) {
[/code]

Und Reihenfolgen beachten:
Java:
logListener = new LoginListener(btnAnzeigen,txtFeld1);
txtFeld1 = new TextField(" Start");

[c]textFeld1[/c] ist bis zu diesem Zeitpunkt [c]null[/c] und enthält keine Referenz auf ein Objekt. Weise erst die Referenz zu, dann sollte es funktionieren:

Java:
txtFeld1 = new TextField(" Start");
logListener = new LoginListener(btnAnzeigen,txtFeld1);

MFG

Tomate_Salat
 

TJava

Bekanntes Mitglied
Ich möchte aber die Beschreibung durch die actionPerformed Methode ändern.
Code:
 txtFeld1.setText("Hallo");
so ca.
Das txtFeld1 ist aber nicht in der selben Klasse.

Ich habe das erst zugewiesen

Code:
public Login() {
		super("Fenster mit Textfeldern");

		setBounds(100, 100, 480, 205);
		setLayout(null);

		

		txtFeld1 = new TextField(" Start");
		txtFeld1.setBounds(12, 23, 100, 100);
		txtFeld1.setText("Start2");
		add(txtFeld1);

		btnAnzeigen = new Button("Login");
		btnAnzeigen.setBounds(360, 80, 100, 23);
		btnAnzeigen.addActionListener(logListener);
		add(btnAnzeigen);
		logListener = new LoginListener(btnAnzeigen, txtFeld1);
		
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				System.exit(0);
			}
		});


Das ist die Klasselogin und die actionPerformed Methode ist im LoginListener
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
Verwende bitte die
Java:
-tags und nicht die [code]-tags

Was du jz geschrieben hast, war mir schon klar, aber wo ist das Problem? Das sollte so funktionieren. Wenn es nicht tut wie es soll, poste bitte nochmal beide klassen komplett.
 

TJava

Bekanntes Mitglied
So hier nochmal die beiden Klassen als erstes LoginListener

Java:
package view;

import java.awt.*;
import java.awt.event.*;

class LoginListener implements ActionListener {

	private Button btnAnzeigen;
	private TextField txtField1;
	 
	        public LoginListener(Button btnAnzeigen, TextField txtFeld1) {
	                 this.btnAnzeigen = btnAnzeigen;
	                 this.txtField1 = txtFeld1;
	    }
	 
	    public void actionPerformed(ActionEvent e) {
	        Object quelle = e.getSource();
	        if (quelle== btnAnzeigen) {
	         txtFeld1.setText("Hallo");
	 
	        }

	}

}
Und das hier ist die Klasse Login

Java:
package view;

import java.awt.*;
import java.awt.event.*;

public class Login extends Frame {
	LoginListener logListener;

	static TextField txtFeld1;

	Button btnAnzeigen;

	public static void main(String[] args) {
		Login f = new Login();
		f.setVisible(true);
	}

	public Login() {
		super("Fenster mit Textfeldern");

		setBounds(100, 100, 480, 205);
		setLayout(null);

		

		txtFeld1 = new TextField(" Start");
		txtFeld1.setBounds(12, 23, 100, 100);
		txtFeld1.setText("Start2");
		add(txtFeld1);

		btnAnzeigen = new Button("Login");
		btnAnzeigen.setBounds(360, 80, 100, 23);
		btnAnzeigen.addActionListener(logListener);
		add(btnAnzeigen);
		logListener = new LoginListener(btnAnzeigen, txtFeld1);
		
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				System.exit(0);
			}
		});

	}

}

EDIT: Ich habe jetzt noch txtFeld1.setText("Hallo"); geändert zu txtField1.setText("Hallo");
Jetzt kann ich es ohne Fehlermeldung ausführen aber es verändert sich nichts:-(

Vielen Dank für eure Hilfe
 
Zuletzt bearbeitet:

TJava

Bekanntes Mitglied
Habe es geschafft, nur habe ich noch ein paar kleine Fragen.


In dieser Art funktioniert es. Also ich weise Referenz logListener im ActionListener ein Objekt der Klasse LoginListener zu und übergebe dieser Instanz mit dem Namen logListener zwei Objekte (btnAnzeigen, txtFeld1)

Java:
		btnAnzeigen = new Button("Login");
		btnAnzeigen.setBounds(360, 80, 100, 23);
		btnAnzeigen.addActionListener(logListener = new LoginListener(btnAnzeigen, txtFeld1));

Hey ich verstehe es nun :-D:toll::toll:

Noch eine Frage hätte ich. Wieso verändert sich das txt überhaupt?
Wie stehen die in Beziehung zueinander? Wie kann man das verstehen?
Im Login ist die Referenz auf das TextFeld txtFeld1
Im LoginListener ist die Referenz txtFeld1ImListener
Ist es so das wenn ich eins ändere das andere immer mitgeändert wird?
Wo finde ich mehr Infos dazu?

Java:
public void actionPerformed(ActionEvent e) {
            Object quelle = e.getSource();
            if (quelle== btnAnzeigenImListener) {
            	System.out.println("Hallo");
                txtFeld1ImListener.setText("Hallo");
     
            }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E ActionListener Java Basics - Anfänger-Themen 4
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
J Array Actionlistener Java Basics - Anfänger-Themen 9
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
P Erste Schritte ActionListener Java Basics - Anfänger-Themen 2
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
J Erste Schritte Actionlistener für tbar/ JButton Java Basics - Anfänger-Themen 15
krgewb ActionListener Java Basics - Anfänger-Themen 1
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
F ActionListener mit Files etc Java Basics - Anfänger-Themen 12
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
CptK Auf ActionListener von anderer Klass aus zugreifen Java Basics - Anfänger-Themen 5
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
U ActionListener mit JMenuItems verknüpfen Java Basics - Anfänger-Themen 1
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
L Problem bei Java-ActionListener Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
JavaNewbie2.0 ActionListener Java Basics - Anfänger-Themen 11
Voreck Actionlistener problem Java Basics - Anfänger-Themen 1
G Im ActionListener eine "äußere" Variable verändern Java Basics - Anfänger-Themen 13
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
M public static int in ActionListener Java Basics - Anfänger-Themen 6
S actionlistener timer Java Basics - Anfänger-Themen 9
J Interface ActionListener in eigener Klasse Java Basics - Anfänger-Themen 27
P aus ActionListener auf HauptFrame zugreifen Java Basics - Anfänger-Themen 4
A Klassen Bool Actionlistener Java Basics - Anfänger-Themen 2
K Methoden ActionListener wird übersprungen Java Basics - Anfänger-Themen 3
S actionlistener Java Basics - Anfänger-Themen 29
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
J ActionListener Java Basics - Anfänger-Themen 5
A ActionListener Java Basics - Anfänger-Themen 9
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
Z ActionListener wird nicht erkannt? Java Basics - Anfänger-Themen 5
T ActionListener Source vergleichen Java Basics - Anfänger-Themen 8
T Frage zum ActionListener Java Basics - Anfänger-Themen 5
R ActionListener mit for Schleife füllen. Java Basics - Anfänger-Themen 4
K Button's mit versch. Aufgaben/ActionListener Java Basics - Anfänger-Themen 12
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
I ActionListener reagiert nicht Java Basics - Anfänger-Themen 6
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
D Erste Schritte Buttons mit actionlistener Problem Java Basics - Anfänger-Themen 3
S JButton mit ActionListener Java Basics - Anfänger-Themen 5
S ActionListener, Methoden und Variablen Java Basics - Anfänger-Themen 4
X Variablen Actionlistener | Variablen-namen Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12
T Erste Schritte Berechnete Variable im ActionListener zurückführen Java Basics - Anfänger-Themen 6
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
U JFrame durch ActionListener erweitern Java Basics - Anfänger-Themen 4
M Button , actionlistener Java Basics - Anfänger-Themen 11
P Erste Schritte JTable mit Daten aus Acces DB füllen und Actionlistener einsetzen Java Basics - Anfänger-Themen 29
M Actionlistener Java Basics - Anfänger-Themen 9
D Problem mit ausgelagertem Actionlistener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
M Klassen Durch den ActionListener das GUI einer anderen Klasse verändern Java Basics - Anfänger-Themen 8
T NullPointerException im ActionListener Java Basics - Anfänger-Themen 3
C Erste Schritte GUI - ActionListener - Exception Nullpointer Java Basics - Anfänger-Themen 5
Kenan89 ActionListener in eigene Klasse Java Basics - Anfänger-Themen 8
E JMenu ActionListener reagiert nicht? Java Basics - Anfänger-Themen 6
V ActionListener in einer for-Schleife Java Basics - Anfänger-Themen 2
S Erste Schritte ActionListener auf Buttons einrichten Java Basics - Anfänger-Themen 3
M Variablen Variable lässt sich durch ActionListener nicht ändern Java Basics - Anfänger-Themen 5
P ActionListener Action Event Java Basics - Anfänger-Themen 5
L ActionListener zerschießt AnchorLayout Java Basics - Anfänger-Themen 8
D ActionListener braucht zwei Klicks auf Button??? Java Basics - Anfänger-Themen 2
M Methoden Timer in ActionListener aufrufen Java Basics - Anfänger-Themen 2
Y Actionlistener passt nicht zu Dataset Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
F actionListener Java Basics - Anfänger-Themen 3
S Actionlistener funktionieren nicht in der .jar Java Basics - Anfänger-Themen 9
E ActionListener abwarten lassen? Java Basics - Anfänger-Themen 11
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
H ActionListener Verbesserung möglich? (This) Java Basics - Anfänger-Themen 3
E ActionListener erkennt instanz nicht Java Basics - Anfänger-Themen 9
V ActionListener bei vielen Modulen Java Basics - Anfänger-Themen 3
J ActionListener Java Basics - Anfänger-Themen 2
T JLabel durch ActionListener ändern Java Basics - Anfänger-Themen 4
S ActionListener Java Basics - Anfänger-Themen 4
U actionListener - eine Kleine Frage Java Basics - Anfänger-Themen 7
K Actionlistener Java Basics - Anfänger-Themen 7
M ActionListener außerhalb des EDT ausführen Java Basics - Anfänger-Themen 2
A ActionListener im JMenu - Problem Java Basics - Anfänger-Themen 2
M ActionListener reagiert nicht Java Basics - Anfänger-Themen 4
N ActionListener + GUI Java Basics - Anfänger-Themen 8
H Bewegtes Bild im ActionListener [Problem] Java Basics - Anfänger-Themen 12
D Liste+ActionListener Java Basics - Anfänger-Themen 6
L wie Jframe an ActionListener übergeben Java Basics - Anfänger-Themen 4
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
A JButton ActionListener nach einmaligem Ausführen zurücksetzen Java Basics - Anfänger-Themen 13
Luk10 Problem mit ActionListener Java Basics - Anfänger-Themen 6
R Viereck zeichnen über TextField-Eingabe /ActionListener Java Basics - Anfänger-Themen 9
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
C ActionListener problem Java Basics - Anfänger-Themen 4
L Tray-Einträge und dazu passende ActionListener dynamisch erzeugen? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben