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 :

KeyEvent sur une textField


Sujet :

JavaFX

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 76
    Points : 49
    Points
    49
    Par défaut KeyEvent sur une textField
    Bonjour j'essaye de crée un événement qui permet de faire une action des lors que l'utilisateur tape entrer dans une TextField.
    Dans mon fxml j'ai fait ce ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                            <TextField fx:id="textAeraSurname" maxWidth="300" onKeyReleased="#keyValidation"/>

    et dans le code de la fenêtre associé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       @FXML
        private void keyValidation() {
           EventHandler e ;
           e= textAeraSurname.getOnKeyReleased();
           KeyEvent key = ((KeyEvent) e);
           if (key.getKeyCode() == KeyEvent.VK_ENTER) {
                   System.out.println("caractère tapé!");
               }
       }
    L'événement que je récupère de "l'action " et un EventHandler sauf que j'ai besoin d'un KeyEvent pour vérifié si la touche sélectionné est la touche entré ... J'ai essayer de caster la valeur mais cela me provoque l'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.ClassCastException
    Pourriez-vous m'aider à résoudre ce problème.
    Merci d'avance.
    Cordialement.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    C'est normal tu es en train de recuperer le callback et (de tenter de le caster) et non pas l'evenement que tu espères manipuler.
    Essaie plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @FXML
    private void keyValidation(KeyEvent key) {
        if (key.getKeyCode() == KeyEvent.VK_ENTER) {
            System.out.println("caractère tapé!");
        }
    }
    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 du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par bouye Voir le message
    C'est normal tu es en train de recuperer le callback et (de tenter de le caster) et non pas l'evenement que tu espères manipuler.
    Essaie plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @FXML
    private void keyValidation(KeyEvent key) {
        if (key.getKeyCode() == KeyEvent.VK_ENTER) {
            System.out.println("caractère tapé!");
        }
    }
    J'avais déjà essayer de cette façon cependant cela me provoque l'exception suivante : " Caused by: javafx.fxml.LoadException: Error resolving onKeyReleased='#keyValidation', either the event handler is not in the Namespace or there is an error in the script."

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Aucun soucis pour moi. Vu que tu utilises event.getKeyCode() au lieu de event.getCode() tu as sans doute importé la classe AWT au lieu la classe JavaFX dans ton contrôleur.

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?import javafx.scene.control.TextField?>
    <?import javafx.scene.layout.StackPane?>
     
    <StackPane fx:id="root" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fxml.keyevent.TestController">
       <children>
          <TextField fx:id="textField" onKeyPressed="#onKeyPressed" />
       </children>
    </StackPane>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package fxml.keyevent;
     
    import javafx.fxml.FXML;
    import javafx.scene.input.KeyEvent;
     
    public final class TestController {
        @FXML
        private void onKeyPressed(final KeyEvent event) {
            System.out.println(event.getCode());
        }
    }
    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
    package fxml.keyevent;
     
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
     
    import java.net.URL;
    import java.util.Optional;
     
    public final class Main extends Application {
        public static void main(String... args) {
            launch(args);
        }
     
        @Override
        public void start(final Stage stage) throws Exception {
            final var fxmlLoader = new FXMLLoader(getClass().getResource("Test.fxml"));
            final var root = fxmlLoader.<Parent>load();
            final var scene = new Scene(root);
            Optional.ofNullable(getClass().getResource("styles/style.css"))
                    .stream()
                    .map(URL::toExternalForm)
                    .forEach(scene.getStylesheets()::add);
            stage.setTitle("Test");
            stage.setScene(scene);
            stage.show();
        }
    }
    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 du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par bouye Voir le message
    Aucun soucis pour moi. Vu que tu utilises event.getKeyCode() au lieu de event.getCode() tu as sans doute importé la classe AWT au lieu la classe JavaFX dans ton contrôleur.
    .............
    D'accord merci bien !

    Voici le code pour ceux que ça intéresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        @FXML
        private void keyValidation(KeyEvent key) {
            if (key.getCode() ==  KeyCode.ENTER) {
                 //Votre traitement
     
            }
        }

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

Discussions similaires

  1. écouter un keyEvent sur une fenêtre
    Par zhero dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 24/03/2017, 10h54
  2. Textfield semi-transparent sur une bitmap
    Par vincent7894 dans le forum Flex
    Réponses: 8
    Dernier message: 27/05/2011, 12h27
  3. Afficher 2 TextField sur une même ligne
    Par mundu dans le forum Java ME
    Réponses: 3
    Dernier message: 07/03/2009, 06h03
  4. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05
  5. Effet Fade In / Fade Out sur une surface DirectDraw
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 08/09/2002, 17h37

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