JavaFX TextField Eingabe in neues Fenster übernehmen

Diskutiere TextField Eingabe in neues Fenster übernehmen im AWT, Swing, JavaFX & SWT Bereich.
B

bfg97

Hallo,
ich schreibe momentan eine Anwendung, die eine E-Mail und ein Passwort im ersten Fenster einliest. Sobald man auf Login klickt, öffnet sich ein neues Fenster auf dem "Eingeloggt als"+ email stehen soll, wobei email durch die Eingabe in das TextField ersetzt werden soll. Ich habe schon nach einigen Möglichkeiten gegoogelt, aber keine davon war zielführend bzw. funktionsfähig. Ich nutze für die Gestaltung der Fenster FXML in Kombination mit SceneBuilder.
Die setText Methode stellt dabei meinen Versuch dar die TextField Eingabe zu nutzen

Java:
//Controller Klasse

public class controller {

    public TextField email;
    public TextField passwort;
    public Button login;
    public Label logged;


    public void setText(ActionEvent event){
        {

            StringBuilder build = new StringBuilder();
            build.append("Eingeloggt als ");
            build.append(email.getText());
            String eingabe = build.toString();
            logged.setText(eingabe);
        }
    }

    public void pressButton(ActionEvent event) throws Exception {
        try {
            FXMLLoader eingeloggt = new FXMLLoader(getClass().getResource("loggedin.fxml"));
            Parent root1 = (Parent) eingeloggt.load();
            Stage stage = new Stage();
            stage.setScene(new Scene(root1));
            stage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
public void return_pressButton(ActionEvent event) throws Exception {
        Parent root1 = FXMLLoader.load(getClass().getResource("testing.fxml"));
        Scene login_scene = new Scene(root1);

        Stage window = (Stage) ((Node) event.getSource()).getScene().getWindow();
        window.setScene(login_scene);
        window.show();
    }
}
Java:
//Die Start-Klasse

public class fxml extends Application {


    @Override
    public void start(Stage stage) throws IOException {

        FXMLLoader fxmlloader = new FXMLLoader(getClass().getResource("testing.fxml"));
        VBox load = fxmlloader.load();
        controller controller = fxmlloader.getController();

        Scene scene = new Scene(load, 640, 480);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args){launch();}
}
Java:
//Beide FXML Dateien

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.VBox?>

<?import javafx.scene.control.Button?>
<VBox alignment="CENTER" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller">
   <children>
      <Label fx:id="logged" alignment="CENTER" contentDisplay="CENTER" text="Logged In"/>
      <Button fx:id="return_button" mnemonicParsing="false" onAction="#return_pressButton" text="Return"/>
   </children>
</VBox>

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.VBox?>

<VBox prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller">
   <children>
      <Label fx:id="email1" text="E-Mail:" />
      <TextField fx:id="email" promptText="E-Mail" />
      <Label fx:id="passwort1" text="Passwort:" />
      <TextField fx:id="passwort" promptText="Passwort " />
      <Button fx:id="login" alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#pressButton" prefHeight="25.0" prefWidth="625.0" text="Login" textAlignment="CENTER" />
   </children>
</VBox>
 
Zuletzt bearbeitet:
L

lam_tr

Was ist an der Stelle das Problem? So wie ich das sehe wird doch sobald du auf dem
return_button Button klickst wird die testing.fxml geladen. Wahrscheinlich willst du in der Application Klasse zuerst das login.fxml laden und von dort aus über den Button zur testing.fxml wechseln oder?
 
B

bfg97

@lam_tr ja, genau. Das funktioniert auch, aber ich möchte auch, dass die Eingabe im TextField email das Label logged überschreibt bzw. den Text darin. Bisher steht auf dem sich öffnenden Fenster nämlich nur Logged In, es soll dort aber Logged in as... stehen, also mit der angegebenen E-Mail Adresse
 
L

lam_tr

@lam_tr ja, genau. Das funktioniert auch, aber ich möchte auch, dass die Eingabe im TextField email das Label logged überschreibt bzw. den Text darin. Bisher steht auf dem sich öffnenden Fenster nämlich nur Logged In, es soll dort aber Logged in as... stehen, also mit der angegebenen E-Mail Adresse
Achso jetzt habe ich verstanden.

Generell gibt es mehrere Lösungen dazu. Du kannst es z.b. über Dependency Injection oder Publish/Subsribe Verfahren machen. Ich bevorzuge das zweite Verfahren weil das sehr einfach ist. Hier der Link dazu https://github.com/greenrobot/EventBus.

Alternativ kannst du auch eine Methode bereitstellen im "Testing"-Controller#setEmail. Ich weiss nicht wie du den Controller genannt hast. Und dieser Methode setzt dann das gewünschte Label.
 
Thema: 

TextField Eingabe in neues Fenster übernehmen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben