FAQ JavaFXConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 507, dernière mise à jour : 2 novembre 2016  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum JavaFX de http://java.developpez.com ainsi que l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.


SommaireSceneGraphInterface utilisateur Accessibilité (7)
précédent sommaire suivant
 

Oui, JavaFX supporte l'accessibilité depuis sa version 8_40.

Depuis cette version, la classe Node dispose de nouvelles propriétés permettant à un assistant d'accessibilité, par exemple une liseuse d’écran, de récupérer les descriptions, attributs et actions disponibles sur un nœud quelconque et d’interagir avec lui. Cela signifie qu'il est désormais possible de rendre accessible n'importe quel nœud graphique qui est affiché dans une scène.

Les contrôles existants de l'API SceneGraph ont également été mis à jour pour supporter ces nouvelles fonctionnalités. Les Q/R suivantes vous sont destinées si vous devez être amenés à implémenter l’accessibilité dans vos nœuds et contrôles customisés.

Mis à jour le 15 mars 2015 bouye

Pour savoir si le support de l'accessibilité est activé, vous pouvez vérifier la valeur de la propriété statique en lecture seule accessibilityActive de la classe javafx.application.Platform. Cette propriété est mise à la valeur true lorsqu'un assistant d'accessibilité, tel qu'une liseuse d’écran, tente d’accéder à une fenêtre ou un nœud JavaFX pour la première fois.

Par exemple :

Code Java : Sélectionner tout
final boolean accessibilityActive = Platform.isAccessibilityActive();

Il est également possible d’enregistrer un écouteur de type InvalidationListener ou ChangeListener sur cette propriété pour être notifié de ses changements de valeur.

Mis à jour le 15 mars 2015 bouye

Pour spécifier l'aide d'accessibilité d'un nœud, vous devez fournir une chaine de caractères dans la propriété accessibleText de ce nœud. Cette valeur permet de spécifier une description courte du nœud ou du contrôle.

Code Java : Sélectionner tout
validadeButton.setAccessibleText("Bouton de validation");

Note : cette propriété change le comportement des nœuds qui sont généralement dictés par une liseuse d’écran. Par exemple, lorsqu'on utilise un bouton, la liseuse est amenée par défaut à lire le texte positionné sur le bouton dans sa propriété text. Dans le cas où la propriété accessibleText du contrôle n'est pas à la valeur null, c'est cette valeur qui sera utilisée à la place par la liseuse.

Mis à jour le 15 mars 2015 bouye

Pour spécifier l'aide d'accessibilité d'un nœud, vous devez fournir une chaine de caractères dans la propriété accessibleHelp de ce nœud. Cette valeur permet de spécifier une description longue du nœud ou du contrôle et ainsi que de son fonctionnement.

Par exemple :

Code Java : Sélectionner tout
validadeButton.setAccessibleHelp("Ce bouton sert à valider cet écran de paramètres avant de lancer le calcul. Cliquer sur ce bouton refermera cette boite de dialogue.");

Mis à jour le 15 mars 2015 bouye

Pour spécifier le rôle d'accessibilité d'un nœud, vous devez modifier la valeur de sa propriété accessibleRole et lui fournir une instance de l’énumération javafx.scene.AccessibleRole.

Le rôle permettra de mieux décrire le nœud à un assistant d'accessibilité. De plus, ce dernier pourra alors attendre en retour la présence de certains attributs et la possibilité de faire certaines actions sur ce nœud.

Par exemple, si nous créons un nouveau contrôle, nous pouvons indiquer que ce dernier se comporte en fait comme un bouton :

Code Java : Sélectionner tout
myControl.setAccessibleRole(AccessibleRole.BUTTON);

Désormais, l'assistant d'accessibilité s'attend à pouvoir récupérer l'attribut TEXT de notre contrôle pour éditer sa description et à pouvoir invoquer l'action FIRE dessus de manière à l'activer.

En effet, à chaque rôle est associée une liste d'attributs et d'actions. Il y a trop de valeurs prédéfinies dans l'énumération accessibleRole pour toutes les décrire ici, mais prenons deux exemples :

  • AccessibleRole.BUTTON - le nœud est considéré comme étant un bouton.
    L'assistant d'accessibilité s'attend donc à trouver les attributs suivants :
    • AccessibleAttribute.TEXT - contient le texte du bouton.

    L'assistant d'accessibilité s'attend à pouvoir effectuer les actions suivantes :
    • AccessibleAction.FIRE - active le bouton.
  • AccessibleRole.COMBO_BOX - le nœud est considéré comme étant une boite déroulante.
    L'assistant d'accessibilité s'attend donc à trouver les attributs suivants :
    • AccessibleAttribute.TEXT - contient le texte de la valeur sélectionnée dans la boite déroulante.
    • AccessibleAttribute.EXPANDED - indique si le menu surgissant de la boite déroulante est affiché.
    • AccessibleAttribute.EDITABLE - indique si la boite déroulante est éditable.

    L'assistant d'accessibilité s'attend à pouvoir effectuer les actions suivantes :
    • AccessibleAction.EXPAND - affiche le menu surgissant de la boite déroulante.
    • AccessibleAction.COLLAPSE - cache le menu surgissant de la boite déroulante.



L’énumération javafx.scene.AccessibleAttribute contient une liste d'attributs prédéfinis avec lesquels un assistant d'accessibilité peut interagir en invoquant la méthode publique queryAccessibleAttribute() sur le nœud. Cette méthode n'est pas invoquée directement par le programmeur, mais par l'assistant. Vous serez donc amené à la surcharger pour retourner les valeurs correctes en fonction des attributs que votre nœud est censé transmettre à l'assistant.

Par exemple, dans le cadre de notre nouveau contrôle qui se comporte comme un bouton :

Code Java : Sélectionner tout
1
2
3
4
5
6
7
8
9
@Override 
public Object queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters) { 
    if (attribute == AccessibleAttribute.TEXT) { 
        // Retourner le texte de notre faux bouton. 
        [...] 
    } else { 
        return super.queryAccessibleAttribute(attribute, parameters); 
    } 
}

L’énumération javafx.scene.AccessibleAction contient une liste d'actions prédéfinies qu'un assistant d'accessibilité peut exécuter en invoquant la méthode publique executeAccessibleAction() sur le nœud. Cette méthode n'est pas invoquée directement par le programmeur, mais par l'assistant. Vous serez donc amené à la surcharger pour effectuer les actions correctes en fonction des requêtes émises sur votre nœud par l'assistant.

Par exemple, dans le cadre de notre nouveau contrôle qui se comporte comme un bouton :

Code Java : Sélectionner tout
1
2
3
4
5
6
7
8
9
@Override 
public void executeAccessibleAction(AccessibleAction action, Object... parameters) { 
    if (action == AccessibleAction.FIRE) { 
        // Activer notre faux bouton. 
        [...] 
    } else { 
        super.executeAccessibleAction(action, parameters); 
    } 
}

Pour plus d'informations à ce sujet, veuillez vous référer à la javadoc de ces énumérations.

Mis à jour le 15 mars 2015 bouye

Pour spécifier la description du rôle d'accessibilité d'un nœud, vous devez fournir une chaine de caractères dans la propriété accessibleRoleDescription de ce nœud. En effet, l'assistant d'accessibilité utilise généralement des descriptions prédéfinies pour les divers rôles possibles, cette valeur permet de spécifier une description du rôle customisée plutôt que d'utiliser celle par défaut.

Par exemple :

Code Java : Sélectionner tout
validadeButton.setAccessibleRoleDescription("Bouton principal");

Mis à jour le 15 mars 2015 bouye

Lorsque vous modifiez la valeur d'une propriété d'un nœud associée à un attribut d'accessibilité, vous devez notifier l'assistant d'accessibilité que la valeur de cet attribut a été modifiée. Vous pouvez le faire en invoquant la méthode notifyAccessibleAttributeChanged() de la classe Node et en lui passant en paramètre l'attribut dont la valeur a changé.

Par exemple :

Code Java : Sélectionner tout
myControl.notifyAccessibleAttributeChanged(AccessibleAttribute.TEXT);

Mis à jour le 16 décembre 2014 bouye

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -