Von anderer Klasse auf Label zugreifen

Status
Nicht offen für weitere Antworten.

scripper

Mitglied
Hallo,

hab ein kleines Problem, ich arbeite gerade an eine Kniffel spielchen. Ich habe das Spiel in 4 klassen geteilt: Oberfläche, Würfel, Steuerung und Spieler.
Die Oberfläche hab ich mit Hilfe des Visual Editors erstellt. Nun möchte ich gerne aus der Würfel klasse das Icon eines auf der Oberfläche vorhandenen Labels ändern.
Ich hab das versucht über den Punkt Operator aber klappt irgendwie nicht richti, kann nicht auf die Oberfläche zugreifen

Die Main Funktion ist in der oberflaechen Funktion in der run() funktion wird dann ein Objekt der Oberflaeche erzeugt.
Code:
public static void main(String[] args) {
		
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				Oberflaeche thisClass = new Oberflaeche();
				Steuerung steuerung = new Steuerung();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

In der Steuerung erzeug ich dann die Objekte der Würfel in der die Funktion Zahlwechseln ist, die dann auch das Icon ändern muss. Ich habe dass gefühl das Problem liegt in bei den Instanzen irgendwie.
Vielleicht weiß einer Hilfe, falls ihr andere Code teile noch braucht meldet euch ...
danke...
gruß scripper
 
das katastrophal benannte Oberflaeche-Objekt muss offensichtlich dem Steuerungs-Objekt als Parameter übergeben werden,
wenn dieses darauf zugreifen soll
 
also hab ich das Richtig verstanden mit dem übergeben?? (Oberflaeche auch umbenannt ;-))

Code:
Steuerung steuerung = new Steuerung(GUI);

Code:
	Object oberflaeche;
	//Konstruktor--------------------------------
	public Steuerung(Object gui) {
		oberflaeche = gui;
	}
aber wenn ich dann versuch darauf zuzugreifen (siehe code) funktioniert es nicht
Code:
oberflaeche.lblWuerfel1.setIcon(new ImageIcon(getClass().getResource("/wuerfel1.gif")));
oder hab ich das mit dem übergeben falsch gemacht?
 
eclipse streicht mir oberflaeche.lblWuerfel1 in der zeile an, hat aber kein Lösungsvorschlag wenn ich auf das Kreuzchen klicke.
Es heißt oberflaeche.lblWuerfel1 cannot be re solved or is not a field
Also kann er rgendwie nicht drauf zu greifen ...
 
In der Steuerung-Klasse ist die GUI nur als "Object" bekannt. Also das hier
Code:
Object oberflaeche;
   //Konstruktor--------------------------------
   public Steuerung(Object gui) {
      oberflaeche = gui;
   }
ändern in
Code:
Oberfleache oberflaeche;
   //Konstruktor--------------------------------
   public Steuerung(Oberfleache gui) {
      oberflaeche = gui;
   }

damit man auch dort weiß, dass es eine "Oberfleache" ist...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben