Maison  >  Article  >  Java  >  Comment utiliser JavaFX pour implémenter une interface graphique prise en charge multilingue dans Java 9

Comment utiliser JavaFX pour implémenter une interface graphique prise en charge multilingue dans Java 9

WBOY
WBOYoriginal
2023-07-29 13:02:01879parcourir

Comment utiliser JavaFX dans Java 9 pour implémenter une interface graphique avec prise en charge multilingue

Introduction :
Avec le développement de la mondialisation, la prise en charge multilingue est devenue une exigence importante pour le développement de logiciels. L'internationalisation du texte dans différentes langues est une étape nécessaire lors du développement d'interfaces graphiques. Dans Java 9, nous pouvons utiliser JavaFX pour implémenter une interface graphique avec prise en charge multilingue. Cet article explique comment utiliser le mécanisme Resource Bundle fourni par JavaFX pour obtenir une prise en charge multilingue et donne un exemple de code correspondant.

1. Préparer les fichiers de ressources
Dans le projet, nous devons préparer un fichier de ressources pour chaque langue et obtenir une prise en charge multilingue en chargeant différents fichiers de ressources.

1. Créez un dossier de ressources
Dans le répertoire src/main/java du projet, créez un dossier nommé resources. Ce dossier sera utilisé pour stocker les fichiers de ressources dans différentes langues.

2. Créer des fichiers de ressources
Sous le dossier ressources, créez un fichier de ressources pour chaque langue. La règle de dénomination des fichiers de ressources est baseName_langue.properties, où baseName est le nom de base du fichier de ressources et langue est l'identifiant de la langue. Par exemple, nous pouvons créer un fichier de ressources nommé bundle_zh_CN.properties pour stocker du texte chinois simplifié.

3. Remplissez le contenu de la ressource
Ouvrez le fichier de ressource et remplissez le texte qui doit être internationalisé en fonction de la paire clé-valeur. Par exemple, nous pouvons ajouter le contenu suivant au fichier bundle_zh_CN.properties :

greeting=你好!

2. Charger les fichiers de ressources
Dans JavaFX, utilisez la classe ResourceBundle pour charger les fichiers de ressources. Nous devons sélectionner le fichier de ressources correspondant en fonction de la langue de l'utilisateur dans le programme à charger.

1. Obtenez le Locale par défaut
Locale est une classe qui décrit la langue, le pays et d'autres informations. Nous pouvons utiliser la méthode java.util.Locale.getDefault() pour obtenir les paramètres régionaux par défaut de l'utilisateur actuel.

2. Charger les fichiers de ressources basés sur Locale
Utilisez la méthode ResourceBundle.getBundle() pour charger le fichier de ressources correspondant. Les paramètres entrants sont le nom de base et la localisation du fichier de ressources. Par exemple, nous pouvons charger le fichier bundle_zh_CN.properties via le code suivant :

ResourceBundle bundle = ResourceBundle.getBundle("bundle", Locale.CHINA);

3. Obtenez le contenu texte
Après avoir chargé le fichier de ressources, nous pouvons obtenir le contenu texte correspondant en fonction de la clé dans le fichier de ressources.

1. Obtenez du contenu texte dans JavaFX
Dans JavaFX, nous pouvons réaliser l'internationalisation du texte en annotant @FxText. Nous devons utiliser cette annotation dans le fichier FXML et définir la clé correspondante. Par exemple, nous pouvons écrire ceci dans le fichier FXML :

<Text fx:id="greeting" text="%greeting" />

2. Définir le contenu du texte
Dans la classe contrôleur de JavaFX, nous pouvons obtenir le contenu du texte en appelant la méthode getString() de ResourceBundle et l'appliquer au correspondant sur le contrôle. Par exemple, nous pouvons écrire ceci dans la méthode d'initialisation de la classe du contrôleur :

@FXML
private Text greeting;
bundle = ResourceBundle.getBundle("bundle", Locale.getDefault());
String greetingText = bundle.getString("greeting");
greeting.setText(greetingText);

4. Changer de langue
Afin d'obtenir une prise en charge multilingue, nous devons offrir aux utilisateurs la possibilité de changer de langue. Nous pouvons implémenter le changement de langage via les événements déclencheurs fournis par JavaFX.

1. Lier des événements
Dans la classe du contrôleur JavaFX, nous pouvons lier un événement déclencheur au bouton ou à l'élément de menu qui change de langue. Par exemple, nous pouvons lier un événement click à un bouton nommé changeLanguageButton :

<Button fx:id="changeLanguageButton" onAction="#changeLanguageButtonClicked" />

2. Gestion des événements
Dans la classe contrôleur, implémentez la méthode pour gérer l'événement click. Dans cette méthode, nous devons modifier les paramètres régionaux actuels, recharger le fichier de ressources et mettre à jour l'interface. Par exemple, nous pouvons implémenter la méthode changeLanguageButtonClicked() comme ceci :

@FXML
private void changeLanguageButtonClicked() {
    if (Locale.getDefault().equals(Locale.CHINA)) {
        Locale.setDefault(Locale.US);
    } else {
        Locale.setDefault(Locale.CHINA);
    }
    bundle = ResourceBundle.getBundle("bundle", Locale.getDefault());
    String greetingText = bundle.getString("greeting");
    greeting.setText(greetingText);
}

Conclusion :
En utilisant le mécanisme de regroupement de ressources fourni par JavaFX, nous pouvons facilement implémenter une interface graphique avec prise en charge multilingue. Grâce à l'introduction de cet article, je pense que tout le monde peut maîtriser la méthode d'utilisation de JavaFX pour obtenir une prise en charge multilingue dans Java 9. J'espère que cet article sera utile à l'étude de chacun.

Code de référence :
Contenu des fichiers de ressources dans différentes langues :
bundle_zh_CN.properties

greeting=你好!

bundle.properties

greeting=Hello!

@Annotation FxText utilisée dans les fichiers FXML :

<Text fx:id="greeting" text="%greeting" />

Méthodes pour gérer les événements de clic dans les classes de contrôleur :

@FXML
private void changeLanguageButtonClicked() {
    if (Locale.getDefault().equals(Locale.CHINA)) {
        Locale.setDefault(Locale.US);
    } else {
        Locale.setDefault(Locale.CHINA);
    }
    bundle = ResourceBundle.getBundle("bundle", Locale.getDefault());
    String greetingText = bundle.getString("greeting");
    greeting.setText(greetingText);
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn