[SWT] Aus Composite auf anderes Composite zugreifen

pipip

Mitglied
Ich schreibe gerade an einem kleinen SWT Programm und bin dabei auf folgendes Problem gestoßen:

Das Hauptprogramm besteht ua. aus folgenden Teilen:
  • Tabelle [links]
  • Tabelle [rechts]
  • Statuszeile [unten]
Diese drei Komponenten habe ich jeweils in ein eigenes Composite gepackt und in jeweils eine eigene Klasse ausgelagert (xxx extends Composite). In der Hauptklasse setze ich dann ua. diese drei Komponenten zusammen.

Nun möchte ich aus der Klasse in der zB. die linke Tabelle definiert wird, die Statuszeile ändern, also die Methode UpdateStatusText(String string) aufrufen. Ich schaffe es aber nicht auf diese zuzugreifen. Wäre super wenn mir dabei jemand helfen könnte. Ist das überhaupt möglich?


Oberflaeche.java (darin werden ua. die Komponenten zusammengesetzt)
Java:
...
this.table1 = new ATable(this.shell, SWT.NULL);
...
this.table2 = new BTable(this.shell, SWT.NONE);
...
this.status_bar = new StatusBar(this.shell, SWT.NONE);
...

StatusBar.java
Java:
public class StatusBar extends Composite {
  	private Label status_text;
  
  	public StatusBar(Composite parent, int style) {
    	super(parent, style);

		this.setLayout(new FillLayout());

		this.status_text = new Label(this, SWT.BORDER);
        updateStatusText("Herzlich Willkommen");
  	}
  	
    public void updateStatusText(String string) {
    	status_text.setText(string);
    }
}

ATable und BTable sind wie gesagt auch Klassen die von Composite abgeleitet sind (ähnlich wie die StatusBar).
 
Zuletzt bearbeitet:
Dann gibts du entweder deiner Tabelle im Konstruktor das StatusBar Objekt mit, oder du machst es über einen Listener welche die StatusBar auf der Tabelle anmeldet (schöner, da die du keine Objekte übergibst und somit davon abhängig bist) oder du nutzt dafür einen richtigen Controller (noch schöner, da Tabelle und StatusBar nichts voneinander wissen müssen).
 
danke für die antwort!

ich weiss zwar nicht genau ob ich es so gelöst habe wie du vorgeschlagen, aber es funktioniert :D
und zwar habe ich in der Klasse ATable einfach folgende Methode angelegt:
Java:
	public void setStatusBar(StatusBar sb) {
		this.status_bar = sb;
}
diese rufe ich aus dem hauptprogramm auf...
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück