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 :

Créer un composant en java et l'insérer dans une fenêtre FXML


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Par défaut Créer un composant en java et l'insérer dans une fenêtre FXML
    Bonjour,

    Me voici de nouveau bloqué sur mon projet de création d'interface graphique.
    Je dois créer une page permettant d'afficher plusieurs produits avec le prix indiqué et ce prix doit pouvoir être modifié. Dans mon cas j'utilise un spinner pour incrémenter ou décrémenter le montant.
    La fenêtre est créée via scenebuilder avec les différents produits. Pour le moment, quand je crée le spinner directement depuis le scenebuilder, je n'arrive pas à faire le fonctionner. Je ne sais pas comment choisir sa valeur min,max,défaut et le pas.

    J'ai donc codé ce spinner que j'ai affiché sur une fenêtre vierge pour faire des tests (prix min: 0, prix max: 5, valeurdefault: 1, pas: 0.05) Ceci fonctionne correctement.
    Par contre je n'arrive pas à afficher ce spinner directement dans le fichier FXML créé au préalable.

    1) Pouvez m'expliquer comment coder ce composant et l'insérer dans un fichier fxml ?
    2) Comment puis-je contrôler le spinner (choisir sa valeur min,max etc..) créé directement depuis le fichier FXML?

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    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 901
    Billets dans le blog
    54
    Par défaut
    D'après "Initialize Spinner control in fxml" sur StackOverflow et d'après le code source du contrôle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public Spinner(@NamedArg("min") double min,
                       @NamedArg("max") double max,
                       @NamedArg("initialValue") double initialValue,
                       @NamedArg("amountToStepBy") double amountToStepBy) {
    Il devrait être possible de faire :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <Spinner min="0" max="5" initialValue="1" amountToStepBy="0.05"/>

    Bon, moi, après, vu qu'à chaque fois je dois mettre une ValueFactory, un TextFormatter sur l'éditeur ou encore un min, max, etc. qui dépendent du contexte et ben au final c'est surtout dans la méthode initialize() du contrôleur que je mets ces valeurs en fait.
    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 averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Par défaut
    Merci bouye, je vais essayer ce que tu viens de me dire.
    Bon, moi, après, vu qu'à chaque fois je dois mettre une ValueFactory, un TextFormatter sur l'éditeur ou encore un min, max, etc. qui dépendent du contexte et ben au final c'est surtout dans la méthode initialize() du contrôleur que je mets ces valeurs en fait.
    Ca m’intéresse également, je n'ai jamais utilisé pour le moment la méthode initialize() et je pense que ça doit être très très utile. Dans mon cas je fixe au départ la valeur par défaut mais ensuite la valeur contenu dans le spinner doit être récupéré car elle est envoyée à la carte principal qui elle gère le système globale (identique à un distributeur automatique) et permet ou non de distribuer un produit.

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    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 901
    Billets dans le blog
    54
    Par défaut
    C'est simple, lorsqu'elle existe la méthode initialize() est invoquée une fois que le contrôleur a été instancié et que les membres annotés @FXML ont été injectés dans le contrôleur.

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <StackPane fx:controller="test.MyController">
        <children>
            <Spinner fx:id="mySpinner"/>
        </children>
    </StackPane>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public final class MyController implements Initializable {
        @FXML 
        private Spinner<Integer> mySpinner;
     
        public void initialize(final URL url, final ResourceBundle bundle) {
            assert(mySpinner != null);
            mySpinner.setMin(...);
            mySpinner.setMax(...);
            mySpinner.setValueFactory(...);
            mySpinner.getEditor().setTextFormatter(...);
        }
    }
    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

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 15
    Par défaut
    Merci Bouye! Le spinner fonctionne correctement. Enfin ^^

    Nouveau problème: J'ai créer un exécutable jar, je l'ai testé directement sur mon pc et tous fonctionne normalement. J'ai même essayé le tactile de mon pc et j'arrive bien à interagir sur l'application. Ensuite je l'ai transféré sur une raspberry pi 3 (raspbian) qui possède un écran tactile et j'ai réussi à exécuter l'application mais j'ai des problèmes sur mes événements.
    Lorsque j'utilise le tactile de l'écran, rien ne fonctionne... Comment ça se fait? Je n'arrive pas à comprendre
    J'ai créé des événements pour le tactile (Touchevent) et ça ne change absolument rien...

    Pourquoi tout fonctionne sur mon pc et "rien" sur la raspberry Pi?

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    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 901
    Billets dans le blog
    54
    Par défaut
    Bonne question.
    L'ennui c'est que je ne peux pas tester live car je n'ai pas d’écran tactile sur mon Pi (ni sur mon PC d'ailleurs). Jusqu’à présent j'ai pu seulement tester le mode tactile via le mode simulé qui une fois active permet de faire des gestures avec la souris.

    Du coup comme il s'agit d'un soucis avec le port Pi, il va falloir poser la question sur StackOverflow avec les tag gluon et javafxports (Gluon a bascule le support gratuit la-bas) et attendre une reponse. Si ça se trouve il faut lancer une lib supplémentaire quelconque pour avoir la gestion de l’écran tactile ou lancer l'app en mode root (comme la souris qui déconne un peu en mode utilisateur: cad il faut la débrancher / rebrancher pour faire apparaitre le curseur).
    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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2006, 12h14
  2. Java intégration browser web dans une application swing ....
    Par Manu35 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 23/03/2006, 08h47
  3. [VBA] Calcul pour insérer dans une textebox
    Par Yanmeunier dans le forum IHM
    Réponses: 13
    Dernier message: 15/03/2006, 16h38
  4. Réponses: 5
    Dernier message: 19/04/2005, 09h46
  5. Insérer dans une Vue ordonnée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/09/2004, 15h27

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