Ajouter un commentaire

JavaFX 25 : nouvelles API, une plus grande souplesse sur les textes

Par:
francoistonic

ven, 03/10/2025 - 07:55

Les performances et la flexibilité ont souvent été des faiblesses de JavaFX.Cette nouvelle version annonce :

  • JavaFX controls in the title bar (Preview)
  • RichTextArea (Incubator) : CSS styling of highlights
  • CSS media feature queries
  • TabStopPolicy for TextFlow
  • Additional geometry-based Text / TextFlow APIs
  • Text Layout API

- plus de 74 bugs ont été corrigés

Parmi les nouveautés, notons TabStopPolicy pour TextFlow. L'app peut définir des tabulations en fonction de la position dans une ligne de texte. Plus souple et pratique. Exemple :

    var str1 = "This is...\t";
    var str2 = "a test\tof tabs";
    TextFlow flow = createTextFlow(str1, str2);
    // Create tab stops
    var stops = List.of(
        new TabStop(25),
        new TabStop(90),
        new TabStop(180)
    );
    // Create tab stop policy
    var tsPolicy = new TabStopPolicy();
    tsPolicy.tabStops().addAll(stops);
    flow.setTabStopPolicy(tsPolicy);
L'idée d'utiliser la géométrie qui permet une plus grande souplesse et précision dans l'emplacement.  Même l'ajout d'un composant JavaFX dans la barre de titre d'une fenêtre peut être utile et cette nouveauté est simple à utiliser : 
public class HeaderBarApp extends Application {
    @Override
    public void start(Stage stage) {
        var button = new Button("My button");
        HeaderBar.setAlignment(button, Pos.CENTER_LEFT);
        HeaderBar.setMargin(button, new Insets(5));
        var headerBar = new HeaderBar();
        headerBar.setCenter(button);
        var root = new BorderPane();
        root.setStyle("-fx-background: #afafbf;");
        root.setTop(headerBar);
        var scene = new Scene(root, 200, 150);
        scene.setFill(Color.web("afafbf"));
        stage.setScene(scene);
        stage.initStyle(StageStyle.EXTENDED);
        stage.show();
    }
}
Il faut minimum Java 23 pour l'utiliser. Sur Linux, il faut en plus GTK 3.20 minimum. 

Note de version : https://github.com/openjdk/jfx/blob/jfx25/doc-files/release-notes-25.md

Annonce de JavaFX 25 : https://inside.java/2025/09/23/javafx-25/

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 III   CCC  V     V  H  H  W     W 
I C V V H H W W
I C V V HHHH W W W
I C V V H H W W W
III CCC V H H W W