Swing JTextField aus anderer Klasse aktualisieren

diegodn

Mitglied
Hallo Leute,

ich hab ein kleines Problem. ???:L

Ich hab zwei grafische Klassen:
In der ersten ist ein Textfeld (tfErgebnis) und ein Button (btStart). Drücke ich das Button "btStart" wird eine zweite Oberfläche angezeigt (die erste bleibt weiterhin auf - soll es auch).
In der zweiten Oberfläche ist dann wiederum ein Textfeld (tfAntwort) und ein Button (btAntworten). In das Textfeld "tfAntwort" gebe ich etwas ein und drücke das Button "btAntworten".

Das überprüft ob die Antwort korrekt ist und soll die Hintergrundfarbe des Textfeldes "tfErgebnis" in der ersten Oberfläche ändern (Rot = Falsch, Grün = Richtig).

Genau das klappt aber nicht, das Textfeld "tfErgebnis" bleibt unverändert weiß.

Nur wenn ich ein neues Objekt der ersten Oberfläche erstell, ist das Textfeld rot oder grün.

Habt ihr 'ne Idee an was das liegen könnte?


Grüße
Diego
 
Sorry hatte gestern keine Zeit mehr...

Ich habe übrigens gestern noch etwas falsch beschrieben. Und zwar ist es so, dass wenn ich auf den Start Button drück, eine zufällige Midi Datei abgespielt wird, sonst nichts.

Während diese läuft drück ich entweder A (Spieler 1) oder B (Spieler 2) und es öffnet sich diese zweite Oberfläche die ich oben erklärt hab.

Das steht in der ersten Oberfläche um das zweite Fenster zu öffnen:
Java:
		this.addKeyListener(new java.awt.event.KeyAdapter() {
			public void keyReleased(java.awt.event.KeyEvent e) {
				// Variablen
				int tasteSp1 = e.VK_A;
				int tasteSp2 = e.VK_S;
				
				// Neues Objekt des zweiten Fensters
				VC_Antwort antwortfenster = new VC_Antwort();
				
				// Mitgeben welcher Song gespielt wird
				antwortfenster.setMidiAbspielen(midiAbspielen);
				
				// Rausfinden welche Taste gedrückt wurde
				if (e.getKeyCode() == tasteSp1) {
					// Überschrift auf Name des Spieler 1 ändern
					antwortfenster.lbSpielerAntwort.setText(lbSpieler1.getText());
					// Fenster anzeigen
					antwortfenster.setVisible(true);
				} else if (e.getKeyCode() == tasteSp2) {
					// Überschrift auf Name des Spieler 2 ändern
					antwortfenster.lbSpielerAntwort.setText(lbSpieler2.getText());
					// Fenster anzeigen
					antwortfenster.setVisible(true);
				}
			}
		});


Hier das actionPerformed des Buttons btAntworten auf der zweiten Oberfläche:
Java:
					// Neues Objekt des ersten Fensters erzeugen
					VC_Spiel methode = new VC_Spiel();
					
					// Variablen
					String str = midiAbspielen.toString();
					String[] split1;
					String[] split2;
					String[] split3;

					// Dateipfad teilen
					split1 = str.split(".mid");
					split2 = split1[0].split("- ");
					split3 = split2[0].split("music\\\\");
					
					// split2 der public Variable song zuweisen 
					song = split2[1];
					// Variable song an das neue Objekt übergeben
					methode.setSong(song);
					
					// split3 der public Variable kuenstler zuweisen
					kuenstler = split3[1];
					// Variable kuenstler an das neue Objekt übergeben
					methode.setKuenstler(kuenstler);
					
					// Textfeld auslesen
					String antwort = tfAntwort.getText();
			
					// Antwort mit Song vergleichen
					if (antwort.equals(song)) {
						// Methode antwortRichtig() ausführen
						methode.antwortRichtig();
					} else {
						// Methode antwortFalsch() ausführen
						methode.antwortFalsch();
					}
					
					// Fenster ausblenden
					dispose();


Und so sehen die zwei Methoden aus der ersten Klasse aus:
Java:
	public void antwortRichtig() {
		tfErgebnis.setBackground(Color.GREEN.brighter());
		tfErgebnis.setText(song + "von " + kuenstler + "ist richtig =)");
		
		System.out.println("test antwort richtig");
	}
	
	public void antwortFalsch() {
		tfErgebnis.setBackground(Color.RED);
	
		System.out.println("test antwort falsch");
	}


Wenn noch wichtige Codeteile fehlen, sag Bescheid.


Gruß
Diego
 

Zurück
Oben