Datenaustausch zwischen 2 Klassen

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
hallo,

ich habe 2 Klassen und ich möchte Zugriff von der einen Klasse auf die methoden der anderen Klasse haben und von der 2. Klasse auf die Methodern der ersten Klasse. Um das zu erreichen, mache ich in der 1. Klasse ein Objekt der 2. Klasse und in der 2. Klasse ein Objekt der 1. Klasse -> und bekomme dadurch einen Stackoverflow.

Weiß jemand wie ich das anders lösen kann -> es geht primär um das, dass, wenn ich auf einen Button drücke, dann wird in der Ersten Klasse die Methode der 2. Klasse setData aufgerufen (in dieser Methode werden Daten in einem Array gespeichert) und wenn sich in diesem vorher erwähnten Array ein Wert ändert so wird eine Methode der 1. Klasse aufgerufen.

Vielleicht kann man das auch anders Lösen.
Bin dankbar für jede Antwort!!

lg
Michl
 
Vielleicht anders Formuliert:

ich habe ein Array[100] und einen Schalter, wenn ich den Schalter auf 1 schalte (der Schalter ist ein Button welchen ich mit einem Icon versehen habe), dann ist der passende Eintrag im Array[z.B.: 5] = 1 und wenn ich den Schalter wieder ausschalte, dann ist der Eintrag im Array wieder 0.
Jetzt möchte ich aber auch, dass, wenn ich im Array[5] den Eintrag von 1 auf 0 ändere, das aus-Icon am Schalter (Button) erscheint.

Weiß jemand wie ich das am Besten machen könnte?

Vielen dank.

lg
 
Trenne die Eigenschaften deiner Klassen vernünftig. Klasse A soll bspw, einen Button mit einem Icon haben und bei bestimmten Zuständen, das Icon wechseln. Klasse B braucht aber davon nichts zu wissen, sondern soll sich nur um die Daten, die in ihr irgendwie gespeichert werden, kümmern.

Wenn du also den Knopf in A drückst, nimmt B Daten an, oder ändert sie und danach setzt A das Icon.

Durch richtige Methodenimplementierungen und Rückgabeparameter in beiden Klassen lässt sich das ganz einfach realisieren.
 
ja aber wie kann ich das lösen, wenn sich in der Klasse B im Array ein Eintrag z.B. von 1 auf 0 ändert, dass ich das in der Klasse A mitbekomme. Wenn der Schalter (Button) gedrückt wird, dann wird in Klasse A eben actionPerformed aufgerufen und in dieser Methode der Wert in iArr gesetzt.

Wenn ich jetzt in Klasse B im iArr den Wert ändere, soll sich das Icon auf dem Schalter wieder ändern.
Vielleicht kann mir da jemand helfen.

lg und vielen Dank


Code:
Klasse A

public class GUIControl implements ActionListener {
    private JankSchalter schalter;
    private ImageIcon buttonAus;
    private ImageIcon buttonEin; 
    private DatenSpeicher datenSpeicher = new DatenSpeicher();

    public GUIControl() {}
    
    public GUIControl(JankSchalter schalter, ImageIcon buttonAus, ImageIcon buttonEin) 
	{
	this.schalter = schalter;
	this.buttonAus = buttonAus;
	this.buttonEin = buttonEin;
	}

    public void actionPerformed(ActionEvent event) 
	{
	if (event.getActionCommand().equals("EinAusSchalter") && schalter.getIcon().equals(buttonAus))
	    {
	    schalter.setIcon(buttonEin);
	    datenSpeicher.setArrayEintrag(5,3, event.getActionCommand());
	    }
	else if (event.getActionCommand().equals("EinAusSchalter") && schalter.getIcon().equals(buttonEin))
	    {
	    schalter.setIcon(buttonAus);
	    datenSpeicher.setArrayEintrag(0,3, event.getActionCommand());
	    }
	} 
    

} 


Klasse B:

public class DatenSpeicher {
    private int[] iArr = new int[100];
    
    public DatenSpeicher() {
    }
    
    public void setArrayEintrag(int Wert, int index, String component) 
	{
        this.iArr[index] = Wert;
	// hier soll z.B. durch eine Tcpip-Schnittstelle ein eintrag im iArr verändert werden, z.B. von 1 auf 0
        // und dann soll eben im der Klasse A auf dem Schalter wieder der Icon buttonAus angezeigt werden
	} 
}
 
Wer übergibt denn Daten nach B? Eine weitere Klasse? Oder macht das auch A?

Edit: Ach du hast ja noch mal Code "nachgeschoben".
 
datenSpeicher.setArrayEintrag(5,3, event.getActionCommand()); -> so werden die Daten von der Klasse A an die Klasse B übergeben.

vielen dank
 
das wird von einer anderen Klasse realisiert, mir gings aber nur um die Kommunikation der zwei geposteten Klassen.
anstatt dass das Tcp jetzt Einträge im iArr[100] verändert, möchte ich dasjetzt einmal mit einem Button machen -> wenn ich diesen Button drücke, dann wird der Eintrag in iArr verändert und der Schalter soll umschalten.

lg und danke
Michl
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben