Hallo zusammen,
Ich habe folgendes Problem: Ich habe mit Hilfe des Scene Builders mehrere Fenster erstellt, die ich alle mit Hilfe von Controller-Klassen bearbeite. Am Anfang des Programms wird ein Login-Fenster aufgerufen, welches ein Hilfe-Fenster bei einem fehlgeschlagenen Login öffnet. Das klappt alles auch soweit. Nun wollte ich das Hilfe-Fenster so gestalten, dass der darin enthaltende Text universell anpassbar ist, da im Laufe des Programms die Möglichkeit besteht mehrere solcher Fenster öffnen zu lassen.
Mein Problem ist nun, dass ich es nicht hinbekomme den Text des Labels durch die Controller-Klasse des Login-Fensters zu verändern. Ich habe bereits versucht diese Änderung durch eine Setter-Methode in der InfoMessageController-Klasse zu realisieren aber irgendwie hat das nicht funktioniert..
Die beiden Controller-Klassen hänge ich mal mit ran:
LoginController: Ist die Controller-Klasse für das Login-Fenster
InfoMessageController: Controller-Klasse für die universell anpassbare InfoMessage
Hat vielleicht jemand eine Idee, wie ich mein Vorhaben realisieren kann? Wäre wirklich sehr dankbar!!
Ich habe folgendes Problem: Ich habe mit Hilfe des Scene Builders mehrere Fenster erstellt, die ich alle mit Hilfe von Controller-Klassen bearbeite. Am Anfang des Programms wird ein Login-Fenster aufgerufen, welches ein Hilfe-Fenster bei einem fehlgeschlagenen Login öffnet. Das klappt alles auch soweit. Nun wollte ich das Hilfe-Fenster so gestalten, dass der darin enthaltende Text universell anpassbar ist, da im Laufe des Programms die Möglichkeit besteht mehrere solcher Fenster öffnen zu lassen.
Mein Problem ist nun, dass ich es nicht hinbekomme den Text des Labels durch die Controller-Klasse des Login-Fensters zu verändern. Ich habe bereits versucht diese Änderung durch eine Setter-Methode in der InfoMessageController-Klasse zu realisieren aber irgendwie hat das nicht funktioniert..
Die beiden Controller-Klassen hänge ich mal mit ran:
LoginController: Ist die Controller-Klasse für das Login-Fenster
Java:
package com.thwildau.pachisiG2.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
public class LoginController implements Initializable{
@Override
public void initialize(URL location, ResourceBundle resources) {
}
@FXML
private Label lblUsername;
@FXML
private Label lblPassword;
@FXML
private TextField txtUsername;
@FXML
private PasswordField pwPassword;
@FXML
private Button btnLogin;
@FXML
private Button btnRegister;
@FXML
private void switchToPassword(ActionEvent event) {
pwPassword.requestFocus();
}
@FXML
private void sendInformation(ActionEvent event) {
if(txtUsername.getText().equalsIgnoreCase("Test") && pwPassword.getText().equals("1234")) {
System.out.println("User " + txtUsername.getText() + " logged in");
try{
Node node = (Node) event.getSource();
Stage stage = (Stage) node.getScene().getWindow();
Parent root = FXMLLoader.load(getClass().getResource("/com/thwildau/pachisiG2/layout/GameSetup.fxml"));/* Exception */
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
else {
try {
Stage stage = new Stage();
Parent root = FXMLLoader.load(getClass().getResource("/com/thwildau/pachisiG2/layout/InfoMessage.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.initModality(Modality.APPLICATION_MODAL);
stage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
}
public void login(ActionEvent event) {
if(txtUsername.getText().equalsIgnoreCase("Test") && pwPassword.getText().equals("1234")) {
System.out.println("User " + txtUsername.getText() + " logged in");
try{
Node node = (Node) event.getSource();
Stage stage = (Stage) node.getScene().getWindow();
Parent root = FXMLLoader.load(getClass().getResource("/com/thwildau/pachisiG2/layout/GameSetup.fxml"));/* Exception */
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
else {
//Hier sollte der Text (Label) der InfoMessageController-Klasse geändert werden
try {
Stage stage = new Stage();
Parent root = FXMLLoader.load(getClass().getResource("/com/thwildau/pachisiG2/layout/InfoMessage.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.initModality(Modality.APPLICATION_MODAL);
stage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
}
public void runRegistration(ActionEvent event) {
try{
Node node = (Node) event.getSource();
Stage stage = (Stage) node.getScene().getWindow();
Parent root = FXMLLoader.load(getClass().getResource("/com/thwildau/pachisiG2/layout/Registration.fxml"));/* Exception */
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
} catch(Exception e2) {
e2.printStackTrace();
}
}
}
InfoMessageController: Controller-Klasse für die universell anpassbare InfoMessage
Java:
package com.thwildau.pachisiG2.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class InfoMessageController implements Initializable{
@Override
public void initialize(URL location, ResourceBundle resources) {
}
@FXML
private Label lblInfoMessage;
@FXML
private Button btnOk;
public void closeWindow(ActionEvent event) {
try{
Node node = (Node) event.getSource();
Stage stage = (Stage) node.getScene().getWindow();
stage.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
Hat vielleicht jemand eine Idee, wie ich mein Vorhaben realisieren kann? Wäre wirklich sehr dankbar!!