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

 Java Discussion :

Clavier visuel en Java


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Clavier visuel en Java
    Bonjour,

    je suis débutant en Java et je voudrais concevoir un clavier visuel. mais je ne sais pas comment faire.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    S'il s'agit d'un clavier "visuel", alors il va falloir afficher quelque chose, donc déjà en premier lieu déterminer avec quel type d'API. Pour les applications desktop, le plus commun est Swing, mais JavaFX est une alternative (plus proche des interfaces qu'on peut faire en web). Ensuite, il y a 2 options : utiliser des composants standard (comme JButton en Swing), ou dessiner entièrement un clavier graphiquement (on peut partir d'une image existante (un png par exemple) de clavier). Dans le premier cas, ce sera plus simple de gérer la souris, mais moins joli, et présentera une certaine difficulté d'agencement en cas d'agencement dynamique (voir LayoutManager en Swing).

    Pour faire ce type d'interface, il te faut donc apprendre Swing (ou JavaFx) : tu trouveras dans les FAQ et les tutoriels de Developpez.net (liens en haut de cette page) tout ce qu'il faut (guide pour Swing : regarder les JFrame, JPanel et JButton).

    Pour pouvoir gérer l'interaction avec le clavier "physique", regarde du côté de la classe KeyEventDispatcher (en Swing toujours)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Bonjour Joel !

    Dans le cas où l'on voudrait créer un clavier à partir d'image existantes ou à partir d'images que l'on dessine nous mêmes :
    Pouvons-nous dessiner ou utiliser l'image d'un clavier entier ou doit-on dessiner ou utiliser des images de boutons de clavier et les mettre une par une dans des layout managers ?

    Dan le cas où l'on dessine le clavier entier, est-ce possible de déterminer des zones de listeners où l'on pourra cliquer avec la souris ou faire d'autres actions ?

    Merci,
    OS : LinuxMint 20

  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
    Salut,
    JavaFX possède déjà un clavier visuel, voir Le clavier virtuel et les contrôles mobiles en JavaFX sur mon ancien blog. Mais il est assez limité (support QWERTY uniquement + qq modes de saisie alternatifs). Il a déjà été suggéré d'utiliser le clavier visuel natif é la place (y a pas de raison d'utiliser un clavier visuel JavaFX quand Windows, par exemple, en fourni déjà un de base), mais je ne sais pas si c'est dans les cartons pour le JDK 9.

    Le code source de ce clavier virtuel devrait être accessible dans les sources du repo de l'OpenJFX (chercher VirtualKeyboard et VirtualKeyboardSkin).

    Pour créer un clavier a partir de rien, y a plein plein de solutions possible. Le tout c'est de savoir quel environnement graphique tu vises et le degré d'emmm... à programmer ça que tu envisages.

    • JavaFX : utiliser des Region ou des Bouton pour les touches et un layout customisé ou un contrôle / FXML customisé (via SceneBuilder) par clavier qu'on veut représenter. On peut skinner via CSS ce qui inclut des images pour le clavier lui-même ou les touches.
    • Swing : ça va être un poil plus complexe mais rien n’empêche de créer un layout customisé ou un composant customisé (via les outils d’édition d'UI de NetBeans ou Eclipse) par type de clavier avec des JButton ou des JPanel dedans qui représentent les touches du clavier. Comme toujours skinner le tout avec des images demandera sans doute pas mal de réécriture de painComponent(). Ou alors il faut aller voir du coté de Nimbus et des LnF.
    • Pur Java 2D (ou JavaFX Canvas) : il va falloir tout faire a mano. Une grosse redéfinition d'un paintComponent() dans un JPanel (resp dans les contrôles FX appropriés) devrait être suffisant pour dessiner le clavier d'un seul tenant soit via des directives de dessin, soit en prenant une image. Il va falloir se délimiter des zones géométriques qui définiront les touches du clavier et permettront alors de réagir au passage de la souris. Du coup ça va ressembler plus a de la programmation d'un jeu 2D qu'a du montage d'UI.
    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
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par francky74 Voir le message
    Dans le cas où l'on voudrait créer un clavier à partir d'image existantes ou à partir d'images que l'on dessine nous mêmes :
    Pouvons-nous dessiner ou utiliser l'image d'un clavier entier ou doit-on dessiner ou utiliser des images de boutons de clavier et les mettre une par une dans des layout managers ?
    Je dirais que ça dépend de ce qu'on veut faire au juste : on peut avoir une image unique et un contrôleur (écouteur de souris) qui connait les zones et sait associer les touches avec ces zones (l'équivalent de img/map html). On peut aussi avoir une image pour chaque touche (ou même une animation pour simuler l'enfoncement de la touche) : on peut faire de l'agencement à la mano (avoir une liste d'objets Touche, qui connaissent leur emplacement et leur zone de réaction), ou implémenter LayoutManager (et/ou LayoutManager2) pourle gérer à la Swing. On peut avoir pleins de petites images et reconstituer une image globale du clavier en mémoire (prendra plus de mémoire, mais sera plus performant à l'affichage).

    Citation Envoyé par francky74 Voir le message
    Dan le cas où l'on dessine le clavier entier, est-ce possible de déterminer des zones de listeners où l'on pourra cliquer avec la souris ou faire d'autres actions ?
    Bien sûr. Lorsqu'on reçoit un évènement de souris, on a toujours les coordonnées du pointeur, que l'on peut comparer (à des formes par exemple (voir interface java.awt.Shape en AWT/SWING) ou simplement avoir un algorithme de calcul qui déduit de la position de la souris la touche censée être survolée (comme dans l'exemple de code que j'ai donné ici)). Ensuite, on peut implémenter un mécanisme évènementiel qui imite celui des ActionListeners SWING, et qui permet ensuite de plus facilement ajouter des actions aux touches...

    La problématique la plus importante est de savoir quel est le but du clavier : à priori, remplacer le clavier physique, donc taper des lettres, du texte... où doit aller ce texte ? Dans un composant Java de l'application (un JTextArea par exemple), ou dans n'importe quelle fenêtre ou champ d'édition de la machine, ce qui est plus complexe en Java.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Comment faire un clavier visuel?
    Par Ludo_360 dans le forum Delphi
    Réponses: 12
    Dernier message: 02/05/2007, 15h03
  2. Comment afficher le clavier visuel ?
    Par crossrobotik dans le forum MFC
    Réponses: 1
    Dernier message: 30/01/2007, 14h38
  3. [IHM]Faciliter le visuel de Java ?
    Par Goldocrack dans le forum Interfaces Graphiques en Java
    Réponses: 8
    Dernier message: 05/09/2006, 01h44
  4. Réponses: 2
    Dernier message: 10/07/2006, 18h19
  5. Clavier visuel pour linux ?
    Par Madmac dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 08/06/2005, 18h51

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