JavaFX: Eingabe in TextField als Label zurückgeben?
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class test_etwas extends Application {
public void start(Stage stage) throws Exception {
Stage st = new Stage();
st.setWidth(500.);
st.setHeight(150.);
st.setTitle("Lagerbestand Ändern");
Label alterLager = new Label("Alter Lagerbestand:");
Label neuerLager = new Label("Neuer Lagerbestand:");
Label alterLager = new Label("15");
TextField textField = new TextField();
st.setOnCloseRequest(e -> {
// beim Schließen soll eingegebene Lagerbestand als alter Lagerbestand gesetzt
// werden
});
GridPane gp = new GridPane();
gp.setAlignment(Pos.BASELINE_CENTER);
gp.setPadding(new Insets(20, 20, 20, 20));
gp.add(alterLager, 0, 0);
gp.add(alterLager, 1, 0);
gp.add(neuerLager, 0, 1);
gp.add(textfield, 1, 1);
gp.setHgap(20);
gp.setVgap(20);
Scene scene = new Scene(gp);
st.setScene(scene);
st.show();
}
public static void main(String[] args) {
launch();
}
}
Da, wo es auskommentiert ist, will ich mit einem Lambda-Ausdruck den Lagerbestand verändern. Wie geht das?
2 Antworten
Das:
Label alterLager = new Label("Alter Lagerbestand:");
// ...
Label alterLager = new Label("15");
dürfte einen Fehler verursachen, da zwei Variablen gleichen Namens nicht auf selber Zugriffsebene existieren können.
Zum Setzen / Lesen von Labels/Textfeldern, kannst du nach entsprechenden Methoden doch in der Dokumentation nachschlagen.
Allerdings wird dir das doch kaum etwas nützen, wenn du das Fenster danach eh schließt und die Komponenten dabei wieder verworfen werden.
Wenn das Fenster geschlossen wird, sollte der Wert der Textbox viel eher in einer externen Datenquelle zwischengespeichert werden. Wenn das Fenster geladen wird, liest du diese Datenquelle aus und setzt initial den Wert des Labels.
Hi,
Warum willst du denn mit einem closeRequest Lambda den Lagerbestand ändern?
Ich sehe nicht, wo dein Lagerbestand als Variable gespeichert wird? Oder soll sich einfach nur der Text innerhalb des Labels ändern?
LG
Das ist nur ein Auschnitt aus meinem Code und sehr vereinfacht. Dieses Fenster wird nach dem Anklicken eines Buttons geöffnet. Mein Lagerbestand wird in einer anderen Klasse gespeichert. Ich darf nur nicht den ganzen Code hier reinstellen.
Nach dem dieses Fenster geschlossen wird, soll praktisch in dem anderen Fenster aus dem dieses aufgerufen wurde, der Lagerbestand geändert werden.
Sry wegen Rechtschreibfehler. Ist nicht meine Muttersprache :/