Avec une course de JavaFX application, ouvrir une nouvelle fenêtre avec son propre contrôleur de classe
Je suis en utilisant SceneBuilder en conjonction avec Netbeans JavaFX bibliothèque pour ce projet. J'utilise Scenebuilder pour créer le fxml et netbeans pour les classes de contrôleur. L'objectif est de construire une assez complexe d'application qui doit être déployé.
Je peux lancer une application JavaFX. et raccorder le contrôleur de classe de l'amende juste. Cependant, lorsque j'essaie d'ouvrir une nouvelle fenêtre je n'arrive pas à lier une classe de contrôleur de la nouvelle fenêtre. Pour garder les choses simples, je voudrais avoir un contrôleur séparé de classe pour la nouvelle fenêtre due à un complexe de back-end.
TL;DR-en Essayant d'ouvrir une nouvelle fenêtre sur JavaFX application avec un contrôleur de classe. Contrôleur de classe n'est pas contraignant.
Exemples de Code ci-dessous
Modèle de classe -- wrapper pour le lancement de l'application
public class Model extends Application{
public static void main(String[] args){
Application.launch(Model.class, args);
}
@Override
public void start(Stage stage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
stage.setScene(new Scene(root));
stage.show();
}
}
De l'échantillon.fxml -- fxml fichier de l'application principale
Sample.java -- s'étend Initializable, est la classe de contrôleur pour l'Échantillon.fxml. Ci-dessous est extrait de code où j'essaie d'ouvrir une nouvelle fenêtre intitulée "ServerConfigChooser
try{
Parent root = FXMLLoader.load(getClass().getResource("ServerConfigChooser.fxml"));
FXMLLoader loader = new FXMLLoader(getClass().getResource("ServerConfigChooser.fxml"));
ServerConfigChooser controller = new ServerConfigChooser();
loader.setController(controller);
loader.setRoot(root);
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.show();
} catch (IOException ex)
ServerConfigChooser.java -- implémente Initializable
C'est là que j'ai des problèmes. Je ne peux pas simplement déclarer les variables avec le même fxid que les variables dans la .fichier fxml. La méthode initialize() ne se déclenche pas lorsque la classe est appelée.
La raison pour laquelle le constructeur dans la ServerConfigChooser classe, c'est que je ne pouvais pas le feu la méthode initialize() automatiquement. J'ai le feu à la main dans le constructeur.
Toutes les solutions sont les bienvenues!
Un mot pour le sage. Poser des questions sur le dimanche est généralement la moins active du temps de la semaine. Attendre le lundi pour de meilleurs résultats
Je suis d'accord avec jth41
OriginalL'auteur Kyte | 2014-01-19
Vous devez vous connecter pour publier un commentaire.
Ne pas charger le FXML deux fois comme ça. Vous pouvez charger plusieurs fois la même chose .fxml document (plusieurs graphe de scène /controllers) mais si vous voulez faire ensemble le chargement du graphe de scène et de l'initialisation du contrôleur, vous devez appeler le fxml chargeur qu'une seule fois.
Voici un exemple
Noter que
FXMLLoader
classePar exemple la classe de contrôleur
Et la .fxml
<fx:root type="javafx.scene.layout.AnchorPane" id="AnchorPane" prefHeight="200.0" prefWidth="320.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
OriginalL'auteur thomas.g
Le problème ici, c'est probablement la façon dont vous chargez le
ServerConfigChooser
(j'ai l'impression que le FXML est chargé à deux reprises ou quelque chose comme ça). La suivante devrait fonctionner:Vérifiez également que vous ne pas spécifier
fx:controller
dansServerConfigChooser.fxml
(pourrait entrer en conflit, n'ont pas réellement essayé).OriginalL'auteur Nikos Paraskevopoulos