Hallo,
ich habe eine JavaFX Application mit Scene Builder erstellt und möchte nun über ein Menue (Help / About) ein neues Window öffnen in dem ich über ein Label und TextField Informationen zu meiner Applikation darstelle. Das öffnen und schließen des neuen Fenster funktioniert ohne Probleme, doch leider scheitere ich daran in einer Node (Label, TextField) Text zu setzen und diesen anzuzeigen. Hier mein bisheriger Code zu diesem Problem:
1. Ich habe eine FXML Datei erstellt und mit dem Scene Builder eine VBox mit HBox und einem Label.
2. Das neue Fenster wird aus Main beim drücken "Help/About" (MenuBar - Menu - MenuItem) über folgende Methode gestartet:
3. Ich habe eine Controller Class "ControllerAboutDialog.class" erstellt und diese im Scene Builder zugewiesen. Hier die Controller Klasse.
Das beenden des Window über den OK Button funktiniert, aber es wird nichts im Label dargestellt ??? Auch wenn ich testweise das Label folgendermaßen definiere:
Schreibe ich den Text im SceneBuilder unter properties des Labels wird der Text angezeigt.
Frage:
Kann mir jemand bitte helfen zu verstehen wie ich das in einem neuen Fenster machen muss?
Ist es richtig für dieses zweite Fenster einen neuen Controller zu definieren?
Gruß
Ralf
ich habe eine JavaFX Application mit Scene Builder erstellt und möchte nun über ein Menue (Help / About) ein neues Window öffnen in dem ich über ein Label und TextField Informationen zu meiner Applikation darstelle. Das öffnen und schließen des neuen Fenster funktioniert ohne Probleme, doch leider scheitere ich daran in einer Node (Label, TextField) Text zu setzen und diesen anzuzeigen. Hier mein bisheriger Code zu diesem Problem:
1. Ich habe eine FXML Datei erstellt und mit dem Scene Builder eine VBox mit HBox und einem Label.
2. Das neue Fenster wird aus Main beim drücken "Help/About" (MenuBar - Menu - MenuItem) über folgende Methode gestartet:
Java:
public void menuHelpAbout() throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/application/aboutDialog.fxml"));
Parent rootAboutDialog = fxmlLoader.load();
Stage stage = new Stage();
stage.initModality(Modality.NONE);
stage.setOpacity(1);
stage.setTitle("OraSimpleConnectFX About");
stage.setScene(new Scene(rootAboutDialog));
stage.show();
}
Java:
package application;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class ControllerAboutDialog {
// Fields
public final String versionInfo = "Version: 1.0.0";
// Constructor
public ControllerAboutDialog() {
super();
versionInfoLabel.setText(versionInfo);
System.out.println(versionInfo);
featureInfoTextField.appendText("HuHuHuHu");
System.out.println("HuHuHu");
}
@FXML
Label versionInfoLabel = new Label();
@FXML
TextField featureInfoTextField = new TextField();
@FXML
Button ok = new Button();
// Methods
public void okButtonTapped() {
Stage stageAboutDialog = (Stage) ok.getScene().getWindow();
stageAboutDialog.close();
}
}
Java:
Label versionInfoLabel = new Label(versionInfo);
Frage:
Kann mir jemand bitte helfen zu verstehen wie ich das in einem neuen Fenster machen muss?
Ist es richtig für dieses zweite Fenster einen neuen Controller zu definieren?
Gruß
Ralf