Application de connexion avec 1 étage et plusieurs scène en JavaFX
Je suis en train de faire un montage de projet. J'ai réussi à créer un système de connexion et des menus pour tout, mais quand j'appuie sur les boutons que j'ai fait il va ouvrir une nouvelle fenêtre(avec la scène, scènes). J'ai lu que ce n'est pas la meilleure approche. Le meilleur moyen serait d'avoir seulement 1 étape primaire, et que l'on serait lorsque je lance l'application, la connexion.
Mais j'ai cherché de l'information sur plusieurs scènes avec une étape mais je n'ai pas trouvé les bonnes solutions. Serait vraiment vraiment apprécier un peu d'aide 😉 j'espère que vous comprenez ce que je veux atteindre. La peine de mentionner, je=je fais face à Scenebuilder et fxml fichiers donc j'ai tout ce que je veux pour l'essentiel à faire est de charger un nouveau .fxml scène sur la scène principale.
Donc, j'ai regardé dans un autre thread, et essayer de faire un VistaFramework qui gère tous les changements de scène.
Mais je ne comprends pas complètement, et je ne peux pas le faire fonctionner.
package application;
import javafx.fxml.FXMLLoader;
import java.io.IOException;
import controllers.MainController;
/**
* Utility class for controlling navigation between vistas.
*
* All methods on the navigator are static to facilitate
* simple access from anywhere in the application.
*/
public class VistaNavigator {
/**
* Convenience constants for fxml layouts managed by the navigator.
*/
public static final String MAIN = "LoginGUI.fxml";
public static final String NEW_USER = "NewUserGUI.fxml";
public static final String STARTMENU = "StartMenuGUI.fxml";
/** The main application layout controller. */
private static MainController mainController;
/**
* Stores the main controller for later use in navigation tasks.
*
* @param mainController the main application layout controller.
*/
public static void setMainController(MainController mainController) {
VistaNavigator.mainController = mainController;
}
/**
* Loads the vista specified by the fxml file into the
* vistaHolder pane of the main application layout.
*
* Previously loaded vista for the same fxml file are not cached.
* The fxml is loaded anew and a new vista node hierarchy generated
* every time this method is invoked.
* @param fxml the fxml file to be loaded.
*/
public static void loadVista(String fxml) {
try {
mainController.setVista(
FXMLLoader.load(
VistaNavigator.class.getResource(
fxml
)
)
);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Je reçois une erreur dans loadVista(). Obtenez l'erreur suivante lors de mainController.setVista( "La méthode setVista(Nœud) du type MainController n'est pas applicable pour les arguments (Objet)"
OriginalL'auteur jabbeboy | 2014-05-13
Vous devez vous connecter pour publier un commentaire.
Chaque fichier FXML n'est pas nécessairement une nouvelle Scène.
Un fxml est tout simplement un fichier de la vue avec ses
root element
de l' Les mises en page fournis par Javafx. Il peut avoir plusieurs Mises en page(comme une partie de la racine de mise en page) et des contrôles en fonction de vos besoins.Pour en savoir plus sur fxml, vous pouvez afficher
Java vs JavaFX Script vs FXML. Quel est le meilleur moyen de la programmation en JavaFX?
Tutoriel sur la FXML
http://docs.oracle.com/javafx/2/fxml_get_started/jfxpub-fxml_get_started.htm
Maintenant, une fois votre FXML est prêt, vous pouvez le charger de différentes façons :
Pour vous aider à comprendre les points ci-dessus, voici un exemple pour chacun d'eux. Ici, je suis démontrant une
LoginController
classe qui est un Contrôleur pour le chargement de laFXML
.Exemple - 1
Exemple - 2
Exemple - 3
N. B. Pour plus de détails sur la façon d'accéder
Stage/Scene
sur les différents contrôleurs s'il vous plaît aller à travershttps://community.oracle.com/message/11251866
Login
est leAnchorPane
qui nous sont le chargement à partir de la FXML.LoginController
est juste une référence, vous pouvez remplacer LoginController avec votreMain
classeOkey. Ouais je le comprends. Mais maintenant, je suis dans mon LoginController, et lorsque j'appuie sur le bouton "Login". Il devrait changer de scène et de fichier fxml. Je veux dire im dans mon LoginController maintenant, mais comment accéder à mon stade c'est dans la Main ?
S'il vous plaît aller à travers le lien dans ma réponse mis à jour
S'il vous plaît aidez-moi avec celui-ci. Je serai heureux de vous remercie de votre aide. Ici, il est stackoverflow.com/questions/35270442/... je suis en train d'activer et désactiver les éléments de menu basé sur des droits de l'utilisateur connecté.
OriginalL'auteur ItachiUchiha