Menu JavaFX - première lettre, décoration soulignée


Suivant les normes de l'interface utilisateur: Si l'élément de menu de l'application (dans la barre de menu supérieure) ouvre une liste déroulante, il DOIT être décoré comme il est indiqué sous: Élément de menu décoré première lettre La première lettre a la propriété "text-decoration: underline". Mais en accord avec cela http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html Je ne peux pas faire comme ça dans l'application javafx.

Des suggestions?

Author: Maxim Pavlov, 2014-07-01

1 answers

De Fond sur les Mnémoniques

Ce que vous pointez dans votre image est un clavier mnémonique. JavaFX prend en charge les mnémoniques, mais vous ne les verrez que sur les plates-formes qui utilisent nativement des mnémoniques et où vous avez programmé votre application pour utiliser des mnémoniques. Par exemple, les programmes de Windows utilisent généralement des mnémoniques vous verrez ainsi des mnémoniques dans votre application JavaFX. lorsque vous exécutez l'application sur Windows, mais OS X programmes n'utilisent généralement pas les mnémoniques, donc, si vous exécutez votre application JavaFX sur OS X, vous ne pouvez pas voir les mnémoniques affichés.

Notez également que sous Windows, même si vous avez défini vos mnémoniques comme ci-dessus, vous devez appuyer sur la touche ALT pour voir les mnémoniques soulignés dans une application JavaFX (c'est ainsi que fonctionnent également les applications Windows standard comme Notepad, donc JavaFX n'est pas différent à cet égard).

Définissez vos mnémoniques

Définissez l'analyse mnémonique sur true dans l'élément de menu. (C'est en fait vrai par défaut sur les éléments de menu, mais lisez la documentation liée pour la comprendre un peu mieux). Dans le texte de votre élément de menu, placez un caractère de soulignement _ devant la lettre que vous souhaitez utiliser comme mnémonique du clavier pour votre élément de menu.

Tout ce qui est étiqueté (qui est chaque contrôle avec du texte) peut potentiellement afficher et réagir aux mnémoniques tant que vous définissez l'analyse mnémonique sur true pour l'élément étiqueté et placez un trait de soulignement dans l'étiquette texte.

Définir également les accélérateurs

Les directives pour les développeurs d'Apple encouragent l'utilisation d'accélérateurs plutôt que de mnémoniques lors de l'écriture d'applications pour OS X. Donc, pour permettre à votre application de mieux fonctionner multiplateforme, je recommande de fournir des accélérateurs pour vos éléments de menu, même si vous avez déjà des mnémoniques à utiliser sous Windows. Vous pouvezsetAccelerators sur les éléments de menu dans JavaFX. Pour plus d'informations sur l'utilisation d'accélérateurs dans un JavaFX application, voir la réponse à En utilisant JavaFX 2.2 Mnémonique (et accélérateurs) (qui démontre en fait l'utilisation de l'accélérateur plutôt que l'utilisation mnémonique...).

Utilisez les attributs CSS JavaFX, pas les attributs CSS w3c

La première lettre a la propriété "text-decoration:underline".

Ce n'est pas pertinent et ne fonctionnera pas dans une application JavaFX. JavaFX prend en charge différentes propriétés CSS que les attributs CSS w3c utilisés dans le développement HTML. Dans en particulier, JavaFX ne prend pas en charge: text-decoration:underline. JavaFX ne prend en charge que les propriétés CSS définies dans le JavaFX CSS reference guide. En particulier JavaFX Text prend en charge -fx-underline pour spécifier que le texte doit avoir un style de soulignement appliqué. Mais même alors, fx-underline va souligner tout le texte dans une étiquette plutôt qu'une lettre spécifique, ce qui n'est pas ce que vous voulez.

Exemple d'application

Démontre l'utilisation d'accélérateurs et mnémoniques sur les menus dans une application JavaFX. Notez comment dans l'exemple, il utilise KeyCombination.keyCombination("SHORTCUT+N") pour spécifier le raccourci accélérateur. Il s'agit d'une manière indépendante du système d'exploitation de spécifier une touche de raccourci standard du système d'exploitation dans JavaFX. Sous Windows, le RACCOURCI correspond à CTRL . Sous OS X, le RACCOURCI correspondra à la clé OS X COMMAND.

La capture d'écran montre l'exécution de l'application sous Windows 7 et en appuyant sur la touche ALT pour afficher les mnémoniques.

Nouvel exemple de fichier

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class MnemonicAcceleratedMenu extends Application {
    @Override
    public void start(Stage stage) {
        Menu fileMenu = new Menu("_File");
        MenuItem newFileMenuItem = new MenuItem("_New...");
        newFileMenuItem.setAccelerator(
            KeyCombination.keyCombination("SHORTCUT+N")
        );
        newFileMenuItem.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Something new, this way comes");
            }
        });
        fileMenu.getItems().add(
                newFileMenuItem
        );

        MenuBar menuBar = new MenuBar();
        menuBar.getMenus().setAll(
                fileMenu
        );

        VBox layout = new VBox(menuBar);
        layout.setPrefSize(200, 100);

        stage.setScene(new Scene(layout));
        stage.show();
    }

   public static void main(String[] args) {
        launch(args);
    }
}
 24
Author: jewelsea, 2017-05-23 12:02:17