# JLabel Methode setText funktioniert nicht



## lockdown (10. Mrz 2011)

Hallo zusammen!

Ich habe folgendes Problem: Ich programmiere im Moment eine Art Shopsystem (zu Testzwecken). Bisher ist alles sehr einfach gehalten. Mein "Hauptmenü" befindet sich in einem JFrame. In diesem Frame kann der User neue Kunden anlegen und Aufträge erstellen. Wenn ein Auftrag fertig angelegt und die Datenbank geschrieben wurde, soll mit einem Klick auf "Rechnung erstellen" ein neues JFrame aufgehen, in dem die Rechnung zu sehen ist.

Jetzt zum eigentlichen Problem: In meiner Hauptmenüklasse in der Methode des Buttons "Rechnung erstellen" soll sich das Rechnungsframe öffenen und die Daten sollen in die Labels geschrieben werden. Das passiert aber leider nicht!

In dem Hauptmenüframe lassen sich die Labeltexte ohne weiteres verändern, doch in dem Rechnungsframe nicht.

Hier der Beispielcode, der den Labeltext verändern soll:


```
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
     new Rechnung().setVisible(true);
     jLabel17.setText("TEST!");
}
```

Das Rechnungsframe geht auf, aber der Labeltext verändert sich nicht.

Ich hoffe ihr könnt mir helfen! :bahnhof:

LG!


----------



## SlaterB (10. Mrz 2011)

dein Code gibt nicht her, ob jLabel17 überhaupt ein JLabel ist, ob korrekt initialisiert,
ob im neuen JFrame enthalten oder im alten, quasi nichts,
die drei Zeilen beschreiben kein Programm, dein Text beschreibt den Wunsch, den muss man korrekt umsetzen


----------



## Michael... (10. Mrz 2011)

Die Variable jLabel17 referenziert vermutlich nicht auf ein JLabel in dem neu erstellten Rechnungsobjekt.
Grundsätzlich sollte man da mit getter und setter Methoden arbeiten.
Also in der Klasse Rechnung entsprechende Methoden zur Datenübergabe definieren,
dann kann man z.B. wie folgt den Text eines Labels ändern:

```
Rechnung rechnung = new Rechnung();
rechnung.setLabelText("Test");
```


----------



## lockdown (10. Mrz 2011)

Michael... hat gesagt.:


> Die Variable jLabel17 referenziert vermutlich nicht auf ein JLabel in dem neu erstellten Rechnungsobjekt.
> Grundsätzlich sollte man da mit getter und setter Methoden arbeiten.
> Also in der Klasse Rechnung entsprechende Methoden zur Datenübergabe definieren,
> dann kann man z.B. wie folgt den Text eines Labels ändern:
> ...



Danke! Das bringt mich schon einmal einen ganzen Schritt weiter! Wie müsste der Setter denn in meiner Rechnungsklasse genau aussehen, damit er tatsächlich nur den Text des Labels ändert?

Der "Standard-Setter" den ich über die automatische Codegenerierung in Netbeans erstellen kann bezieht sich auf das komplette Label selbst und nicht spezifisch auf den Labeltext oder? :


```
public void setjLabel17(JLabel jLabel17) {
    this.jLabel17 = jLabel17;
}
```


----------



## Michael... (10. Mrz 2011)

Arrggh, diese Codegeneratoren... ;-)
Was solche setter nutzen habe ich bis heute nicht verstanden.

Aber dieser hat jetzt erstmal nichts mit dem Problem zu tun. Du benötigst in der Klasse Rechnung eine Methode die einen String als Parameter übernimmt und diesen in ein Label schreibt, wie z.B.:

```
public void setWasAuchImmer(String text) {
    labelInDerKlasseRechnung.setText(text);
}
```


----------



## lockdown (10. Mrz 2011)

Ich habs hinbekommen! 


```
public void setjLabel17(String jLabel17) {
    this.jLabel17.setText(jLabel17);
}
```

Danke für deine Hilfe Michael! 

EDIT: Oh  Jetzt hab ich gerade gesehen, dass du dasselbe geschrieben hast. Danke jedenfalls nochmal! Super schnelle und nette Hilfe und jetzt kann die Arbeit weiter gehen! :toll:


----------

