IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Comment afficher une scène d'attente à ma scène principale ?


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut Comment afficher une scène d'attente à ma scène principale ?
    Bonjour,

    La classe ci-dessous extends de JFXPanel.

    Je dois y mettre un fxml qui prend une dizaine de secondes à se charger (tableView avec +/- 10000 lignes).

    Lorsque je lance l'application, je ne vois d'abord rien pendant quelques secondes, ensuite je vois une partie de ma scène en haut à gauche de l'écran et enfin, lorsque tout est chargé, l'écran s'affiche complétement.

    J'ai donc essayé de faire une scène d'attente qui afficherait un simple fxml (appelé" SplashLoad.fxml")

    Le but est normalement d'afficher SplashLoad.fxml et puis de lancer le FxmlLoader de ma grosse scène dans un runlater... et quand ce dernier est chargé, de remplacer le splash par ma scene principale.

    mais rien n'y fait, mon splash ne s'affiche qu'une ou deux secondes dans le coin supérieur gauche, il est vite remplacé par mon gros FXML (toujours dans le coin supérieur gauche) jusqu'à la fin du chargement ou là mon écran s'affiche normalement.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    public class GeneriqueFxPanel2 extends JFXPanel
    {
    	private String				fxmlPath;
    	private GeneriqueFxPanel2	myGP;
     
    	private Parent				root;
    	private Scene				scene;
     
    	public GeneriqueFxPanel2(String fxmlPath)
    	{
     
    		myGP = this;
    		this.fxmlPath = fxmlPath;
     
    		SwingUtilities.invokeLater(new Runnable()
    		{
    			@Override
    			public void run()
    			{
    				initAndShowGUI();
    			}
    		});
     
    	}
     
    	private void initAndShowGUI()
    	{
     
    		Platform.runLater(new Runnable()
    		{
    			@Override
    			public void run()
    			{
     
    				initFX();
    			}
    		});
    	}
     
    	private void initFX()
    	{
    		// This method is invoked on the JavaFX thread
    		try
    		{
     
    			ApplicationController.getInstance().setWaitState(ApplicationController.getInstance().getMother(), true);
    			final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getClassLoader().getResource("be/aaa/bbb/" + fxmlPath));
     
    			Parent rootSplash;
    			Scene sceneSplash;
     
    			FXMLLoader fxmlLoaderSplash = new FXMLLoader(getClass().getClassLoader().getResource("be/aaa/bbb/newmod/gui/SplashLoad.fxml"));
     
    			rootSplash = (Parent) fxmlLoaderSplash.load();
    			sceneSplash = new Scene(rootSplash, 250, 250);
     
    			this.setScene(sceneSplash);
     
     
    			Platform.runLater(new Runnable()
    			{
    				@Override
    				public void run()
    				{
     
    					try
    					{
     
    						root = (Parent) fxmlLoader.load();
    						scene = new Scene(root, 250, 250);
     
    						myGP.setScene(scene);
    					}
    					catch (Exception e)
    					{
    						// TODO: handle exception
    					}
     
    				}
    			});
     
    			ApplicationController.getInstance().setWaitState(ApplicationController.getInstance().getMother(), false);
     
    		}
    		catch (IOException e)
    		{
    			e.printStackTrace();
    		}
    	}
     
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Qu'est ce qui prend le plus de temps : charger les 10k enregistrements ou attacher la seconde scène à l'écran ? Si c'est la première option il faut effectuer un chargement en tache de fond (service, etc.)
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut
    Je pense bien sûr que c'est la recherche des 10K enregistrements.
    Mais le chargement ne commence que pour l'affichage de ma seconde scène !
    donc ça ne m'explique pas pourquoi l'UI n'affiche mon SplashScreen puisque je tourne le FXMLLOADER de ma seconde scène dans un RunLater, je m'attendrais à ce qu'il prenne le temps d'afficher le Splash avant d'interroger la base de données...

    Sinon j'ai trouvé un excellent tutoriel :o))
    http://fabrice-bouye.developpez.com/...thread-javafx/
    qui répond évidemment à mon problème.

    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Forms]Comment afficher une LOV
    Par Sowa dans le forum Forms
    Réponses: 5
    Dernier message: 10/02/2005, 13h48
  2. Réponses: 6
    Dernier message: 22/12/2004, 11h00
  3. PL/SQL - Comment afficher une image avec HTP ?
    Par patmaba dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/07/2004, 09h28
  4. [débutante] comment afficher une page asp ?
    Par boucher_emilie dans le forum ASP
    Réponses: 5
    Dernier message: 29/06/2004, 09h40
  5. comment afficher une boite de dialogue simple ?
    Par Ekimasu dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 08/06/2004, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo