# Eigene StatusBar



## andreas86 (22. Nov 2009)

Hallo,

für ein Projekt habe ich zwei Klassen erstellt. Die eine Klasse stellt mir den Frame zur Verfügung und hat eine Unterklasse StatusBar, welches mit der Hilfe eines Labels eine Statusbar repräsentiert.


```
public class StatusBar extends JLabel {
		
		public StatusBar sb = new StatusBar();
	    
	    /** Creates a new instance of StatusBar */
	    public StatusBar() {
	        super();
	        super.setPreferredSize(new Dimension(100, 16));
	        setMessage("Ready");
	    }
	    
	    public void setMessage(String message) {
	        setText(" "+message);        
	    }
	    
	    public StatusBar getStatusBar() {
	    	return this.sb;
	    }
	}
```

Nun habe ich aber eine andere Klasse, welche nun Änderungen an der StatusBar über 
	
	
	
	





```
setMessage()
```
 vornehmen soll. Kann mir aber vielleicht jemand sagen, wie ich das hinbekomme, dass ich in der Klasse eine Änderung vornehmen kann?

Würde mich über einen Tipp sehr freuen. Danke!


----------



## Tobias (22. Nov 2009)

DAs Konstrukt mit der Instanzmethode getStatusbar() ist Unsinn, weil der Aufrufer bereits ein Objekt von Statusbar besitzen muss, um an diese Methode heranzukommen. Man könnte diese Methode statisch machen (indem man static hinter das public schreibt), aber dann gäbe es im System immer nur eine Statusbar - sobald es mehr als ein Frame mit Statusbar gibt, ist das ein Problem.

Daher solltest du entweder in deinem Frame eine Methode haben, mit der man die zum Frame gehörende Statusbar abfragen kann, oder aber über eine Statusbar-Registry (zum Beispiel in Form eines Mediators) oder dergleichen nachdenken. Der zweite Ansatz ist komplizierter und aufwändiger, weshalb ich ihn nur wählen würde, wenn du darauf angewiesen bist, das Klassen zwar mit der Statusbar arbeiten können sollen, aber zugleich nur eine JFrame-Referenz auf den Fenster haben können (sollte sich eigentlich umgehen lassen).

Zu wenig Code für einen guten Rat...


----------



## andreas86 (22. Nov 2009)

Vielen Dank an Tobias, der mir wirklich die Augen geöffnet hat.


----------

