Per ActionListener auf andere klasse zugreifen

Status
Nicht offen für weitere Antworten.

Agassiz

Mitglied
Ich habe 2 klassen... in der einen ist ein Fenster mit einer einer JTextArea (mit swing)

in der anderen ist ein fenster mit einem login und einem passwordfeld und ein button...


wenn ich auf den button klicke, will ich, dass ( per actionlistener ) der inhalt des loginfeldes und des passwortfeldes in das nachrichtenfeld aus der anderen klasse geschrieben wird..


meine klassen sind NachrichtenFenster und darin ist das nachrichtenfeld mit dem namen "nachrichtenfeld"

und die andere klasse ist Login mit dem logintextfeld : username und dem passworttextfeld : password...



der button heist register


nun habe ich folgendes probiert:


Code:
		register.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent registerlicked) {
				NachrichtenFenster.nachrichtenfeld.setText(username.getText()+password.getText());
			}

});

aber das funktioniert leider nicht :(
könnt ihr mir helfen?

(bin wie ihr sicher schon gemerkt habt erst bei meinen anfängen von java und mehreren klassen)
 
S

SlaterB

Gast
du hast sicherlich ein Objekt der Klasse NachrichtenFenster,
dieses Objekt muss im Objekt der Klasse Login als Exemplarvariable gespeichert werden, z.B. im Konstruktor als Parameter übergeben werden,
dann auf die Exemplarvariable zugreifen
 

Agassiz

Mitglied
SlaterB hat gesagt.:
du hast sicherlich ein Objekt der Klasse NachrichtenFenster,
dieses Objekt muss im Objekt der Klasse Login als Exemplarvariable gespeichert werden, z.B. im Konstruktor als Parameter übergeben werden,
dann auf die Exemplarvariable zugreifen

wie würde sowas denn aussehen? ???:L
 
S

SlaterB

Gast
Code:
public class Login {

   private NachrichtenFenster nach;

   public Login(NachrichtenFenster nach) {
      this.nach = nach;
   }

}


Aufruf:
Login login = new Login(nach); // hier muss irgendwie
// das NachrichtenFenster-Objekt bekannt sein und an Login 
// weitergegeben werden
 

Agassiz

Mitglied
Code:
package MeinPaket;

//[...]


public class Register extends JFrame {

	//[...]

	private NachrichtenFenster nachrichtenfeld; //nachrichtenfeld ist eine JTextArea


	
	public Register(NachrichtenFenster nachrichtenfeld) {
		
	
		 	

	//[...]
		
		
		
		this.nachrichtenfeld =  nachrichtenfeld;
		
		
		
		

		//[...]
		register = new JButton("Registrieren");
		register.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent registerlicked) {
				nachrichtenfeld.setText(username.getText()+password.getText());
			}
		});
		
		

		username = new JTextField("MMustermann", 10);

		password = new JPasswordField("password", 10);

		//[...]

meinst du so?
 

Agassiz

Mitglied
oh .. sorry... ich sollte sagen, dass beide klassen wo anders aufgerufen werden...

jede separat...


Code:
public class HauptKlasse {

	public static void main(String[] args) {
		new NachrichtenFenster();
		new Register();
	
	}
}
 
S

SlaterB

Gast
> //nachrichtenfeld ist eine JTextArea

nachrichtenfeld ist das andere JFrame?!
ist doch vom Typ NachrichtenFenster,
sollte also auch nachrichtenFenster heißen
 

Agassiz

Mitglied
Tut mir leid so übelst verwirrend zu sein:

hier sind meine 3 klassen...

kannst du mir vll. helfen was ich wo hinschreiben muss?...



Code:
package YaJim;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Action;

public class YaJimStartUp {

	public static void main(String[] args) {
		new NachrichtenFenster();
		new Register();
	

	}
}


hier jetzt das NachrichtenFenster:

Code:
package YaJim;

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

import javax.swing.*;

import org.jivesoftware.smackx.packet.IBBExtensions.Close;

public class NachrichtenFenster extends JFrame {

	/**
	 * 
	 */
	public JTextArea nachrichtenfeld;
	public JTextField eingabefeld;
	public JScrollPane scrollPane;
	public JPanel mainPanel, eingabePanel;
	public JButton senden;

	public NachrichtenFenster() {

		super("YAJIM Chat");
		this.setSize(500, 400);
		this.setLocation(300, 300);
		this.setLayout(new BorderLayout(5, 5));
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);

		mainPanel = new JPanel(new GridLayout(1, 1));
		eingabePanel = new JPanel(new BorderLayout());

		senden = new JButton("Senden");
		senden.addActionListener(new ActionListener() {

			public void actionPerformed(final ActionEvent sendenclicked) {
				if (eingabefeld.getText() != "") {
					nachrichtenfeld.setText(nachrichtenfeld.getText()
							+ eingabefeld.getText() + "\n");
					eingabefeld.setText("");
				}
			}
		});

		nachrichtenfeld = new JTextArea(
				"NachrichtenFeld \n Ich habe das LoginFenster und das RegisterFenster jetzt nicht skalierbar gemacht \n "
						+ "und somit ist das prblem mit den sich verziehenden texteingabefeldern weg.\n "
						+ "Beim nachrichtenfeld wurde es ja nicht veraendert.");
		nachrichtenfeld.setCaretPosition(0);

		scrollPane = new JScrollPane(nachrichtenfeld);
		scrollPane
				.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

		eingabefeld = new JTextField(null);
		eingabefeld.setSize(50, 20);

		mainPanel.add(scrollPane);

		eingabePanel.add(BorderLayout.CENTER, eingabefeld);
		eingabePanel.add(BorderLayout.EAST, senden);

		getContentPane().add(BorderLayout.CENTER, mainPanel);
		getContentPane().add(BorderLayout.SOUTH, eingabePanel);

		this.setVisible(true);

	}
}


und jetzt das RegisterFenster
Code:
package YaJim;

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

import javax.swing.*;
import javax.swing.border.TitledBorder;
import org.jivesoftware.smack.*;

public class Register extends JFrame {

	public JTextField username;
	public JPasswordField password;
	public JPanel user, pass, buttonPanel, mainPanel;
	public JButton cancel, register;
	public TitledBorder passborder, userborder;
	public JLabel usertext, passtext;

	public Register() {

		super("Registrieren");
		this.setSize(300, 120);
		this.setLocation(850, 300);
		this.setLayout(new FlowLayout());
		this.setResizable(false);

		cancel = new JButton("Abbrechen");
		register = new JButton("Registrieren");
		register.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent registerlicked) {
				System.out.println("RegisterClicked");
			}
		});

		username = new JTextField("Mustermann", 10);

		usertext = new JLabel(" UserName ");

		password = new JPasswordField("password", 10);

		passtext = new JLabel(" Password ");

		userborder = BorderFactory.createTitledBorder("UserName");
		passborder = BorderFactory.createTitledBorder("PassWord");

		mainPanel = new JPanel(new GridLayout(3, 1));
		user = new JPanel(new FlowLayout());
		user.setBorder(userborder);
		pass = new JPanel(new FlowLayout());
		pass.setBorder(passborder);
		buttonPanel = new JPanel(new FlowLayout());

		mainPanel.add(user);
		mainPanel.add(pass);
		mainPanel.add(buttonPanel);

		user.add(BorderLayout.CENTER, username);

		pass.add(BorderLayout.CENTER, password);

		buttonPanel.add(cancel);
		buttonPanel.add(register);

		getContentPane().add(mainPanel);

		this.setVisible(true);
		pack();

	}
}
 
S

SlaterB

Gast
du verwirrst nicht, ich weise nur auf die Ungereimtheiten hin, damit du sie selber ausbügelst

also das mit der Exemplarvariable musst du wirklich selber machen,
hast du ja schon fast fertig gehabt, wie gesagt mit Namen 'nachrichtenFenster'
dann ist das schon ziemlich gut

---------

als Aufruf hast du bisher
> new NachrichtenFenster();
> new Register();

daraus wird

NachrichtenFenster nachrichtenFenster = new NachrichtenFenster();
new Register(nachrichtenFenster);

schon kennt das Register das andere Fenster

---------

im ActionListener
nachrichtenFenster.nachrichtenfeld.setText(username.getText()+password.getText());
 

Agassiz

Mitglied
mein register sieht jetzt so aus:
Code:
package YaJim;

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

import javax.swing.*;
import javax.swing.border.TitledBorder;
import org.jivesoftware.smack.*;

public class Register extends JFrame {
	
	private NachrichtenFenster nachrichtenFenster;
	
	public JTextField username;
	public JPasswordField password;
	public JPanel user, pass, buttonPanel, mainPanel;
	public JButton cancel, register;
	public TitledBorder passborder, userborder;
	public JLabel usertext, passtext;

	public Register(NachrichtenFenster nachrichtenFenster) {

		super("Registrieren");
		this.setSize(300, 120);
		this.setLocation(850, 300);
		this.setLayout(new FlowLayout());
		this.setResizable(false);
		
		this.nachrichtenFenster = nachrichtenFenster;

		cancel = new JButton("Abbrechen");
		register = new JButton("Registrieren");
		register.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent registerlicked) {
				nachrichtenFenster.nachrichtenfeld.setText(username.getText());;
			} // hier wird nachrichtenFenster rot unterstrichen mit der Meldung: Cannot refer to a non-final variable nachrichtenFenster inside an inner class defined in a different 
 method
		});

		username = new JTextField("Mustermann", 10);

		usertext = new JLabel(" UserName ");

		password = new JPasswordField("password", 10);

		passtext = new JLabel(" Password ");

		userborder = BorderFactory.createTitledBorder("UserName");
		passborder = BorderFactory.createTitledBorder("PassWord");

		mainPanel = new JPanel(new GridLayout(3, 1));
		user = new JPanel(new FlowLayout());
		user.setBorder(userborder);
		pass = new JPanel(new FlowLayout());
		pass.setBorder(passborder);
		buttonPanel = new JPanel(new FlowLayout());

		mainPanel.add(user);
		mainPanel.add(pass);
		mainPanel.add(buttonPanel);

		user.add(BorderLayout.CENTER, username);

		pass.add(BorderLayout.CENTER, password);

		buttonPanel.add(cancel);
		buttonPanel.add(register);

		getContentPane().add(mainPanel);

		this.setVisible(true);
		pack();

	}
}
 
S

SlaterB

Gast
schreibe entweder

Register.this.nachrichtenFenster.nachrichtenfeld.setText(username.getText());

oder benenne den Parameter im Konstruktor um, z.B.



public Register(NachrichtenFenster nFenster) {

super("Registrieren");
[..]
this.nachrichtenFenster = nFenster;
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F ActionListener und Werteübergabe an andere Klasse Java Basics - Anfänger-Themen 3
V ActionListener andere JFrames auslesen Java Basics - Anfänger-Themen 17
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
T ActionListener auslagern Java Basics - Anfänger-Themen 14
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

Ähnliche Java Themen

Neue Themen


Oben