IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

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 utilisateurContrôlesLabels (5)
précédent sommaire suivant
 

Pour afficher un label sur plusieurs lignes, il suffit de modifier sa propriété wrapText et de passer sa valeur à true.

Par exemple :

Code Java : Sélectionner tout
label.setWrapText(true);

Mis à jour le 19 septembre 2014 bouye

Pour mettre une icône sur un label, il suffit de modifier la valeur de sa propriété graphic et de lui donner comme nouvelle valeur une ImageView contenant une Image.

Code Java : Sélectionner tout
1
2
3
final Image image = new Image(getClass().getRessource("Ok.png").toExternalForm()); 
final ImageView icon = new ImageView(image); 
label.setGraphic(icon);

Note : cette propriété accepte n'importe quel type de nœud graphique. Il est donc possible de donner un affichage ou un fonctionnement riche à un label en mettant un nœud ou un contrôle complexe, interactif ou pas, dans cette propriété.

Mis à jour le 19 septembre 2014 bouye

Pour changer la position de l’icône par rapport au texte du label, il suffit de modifier la propriété contentDisplay en lui donnant une valeur de type javafx.scene.control.ContentDisplay.

Par exemple :

Code Java : Sélectionner tout
label.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);

Ici, désormais seule l’icône s'affiche, le texte du label n'est plus visible.

Il est également possible de spécifier l'espace en pixels qui sépare le graphique du texte du label en modifiant la valeur de la propriété graphicTextGap.

Mis à jour le 19 septembre 2014 bouye

Pour afficher du texte riche, il va vous falloir utiliser un gestionnaire de mise en page dédié de type javafx.scene.text.TextFlow. Bien qu'il soit possible d'y intégrer n'importe quel type de nœuds graphiques, ce gestionnaire est principalement dédié à la mise en page de nœuds de type javafx.scene.text.Text avec les césures, retours à la ligne et la justification qui s'imposent.

Par exemple :

Code Java : Sélectionner tout
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
31
32
33
34
35
36
37
38
39
40
41
42
43
public class Main extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        String string = "Salut le monde !\n Portez ce vieux whisky au juge blond qui fume.\n The quick brown fox jumps over the lazy dog.\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec ante augue. Quisque congue ligula eget nisi consequat ornare. Ut finibus nibh quis interdum efficitur. Pellentesque varius vehicula arcu, ultricies hendrerit magna dictum sit amet. Praesent pharetra luctus quam, sed maximus turpis ornare id."; 
        final Color[] colors = {Color.BLACK, Color.BLUE, Color.RED, Color.GREEN, Color.GRAY, Color.CHOCOLATE}; 
        final String[] families = {"System", "Monospace", "Arial", "Lucida", "Blackadder ITC", "Broadway", "Castellar"}; 
        final int[] sizes = {8, 9, 10, 12, 16, 18, 22}; 
        final FontPosture[] postures = FontPosture.values(); 
        final FontWeight[] weights = FontWeight.values(); 
        final TextFlow textFlow = new TextFlow(); 
        textFlow.setTextAlignment(TextAlignment.JUSTIFY); 
        textFlow.setLineSpacing(-5); 
        final StackPane root = new StackPane(); 
        final String[] tokens = string.split(" +"); 
        for (String token : tokens) { 
            final Text text = new Text(token); 
            final Color color = colors[(int) (colors.length * Math.random())]; 
            final int size = sizes[(int) (sizes.length * Math.random())]; 
            final String family = families[(int) (families.length * Math.random())]; 
            final FontPosture posture = postures[(int) (postures.length * Math.random())]; 
            final FontWeight weight = weights[(int) (weights.length * Math.random())]; 
            final Font font = Font.font(family, weight, posture, size); 
            final boolean underline = Math.random() > 0.90; 
            text.setFill(color); 
            text.setFont(font); 
            text.setUnderline(underline); 
            textFlow.getChildren().add(text); 
            if (!token.endsWith("\n")) { 
                textFlow.getChildren().add(new Text(" ")); 
            } 
        } 
        root.getChildren().add(textFlow); 
        final Scene scene = new Scene(root, 300, 250); 
        primaryStage.setTitle("Test de texte riche"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ce qui nous donne :



Ici, nous avons créé un gestionnaire de texte où chaque mot s'affiche à une taille différente et avec une couleur et police différente. Nous avons également diminué l'espace interligne et nous avons demandé à ce que le texte ait un alignement justifié.

Mis à jour le 6 octobre 2014 bouye

Pour attacher une instance de la classe Label à un nœud quelconque, vous devez modifier la valeur de sa propriété labelFor en lui donnant comme valeur une référence vers ce nœud.

Par exemple :

Code Java : Sélectionner tout
label.setLabelFor(textField);

Ici, le label est désormais attaché à un champ d’édition. L'utilisation de raccourcis claviers ou de touches mnémoniques permettra de basculer le focus directement dans le champ d’édition.

Mis à jour le 15 mars 2015 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 © 2024 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.