Justification complète avec un graphique Java.Remplacement de cordon?


Quelqu'un connaît-il du code existant qui vous permet de dessiner du texte entièrement justifié dans Java2D?

Par exemple, si je disais, drawString("sample text here", x, y, width), existe-t-il une bibliothèque existante qui pourrait déterminer la quantité de ce texte dans la largeur, faire un espacement entre les caractères pour que le texte soit beau et faire automatiquement un habillage de mot de base?

Author: David Koelle, 2008-12-30

2 answers

Bien que pas le plus élégant, ni solution robuste, voici une méthode qui va prendre le Font de l'actuel Graphics objet et obtenir son FontMetrics afin de savoir où tracer le texte, et, si nécessaire, passer à une nouvelle ligne:

public void drawString(Graphics g, String s, int x, int y, int width)
{
    // FontMetrics gives us information about the width,
    // height, etc. of the current Graphics object's Font.
    FontMetrics fm = g.getFontMetrics();

    int lineHeight = fm.getHeight();

    int curX = x;
    int curY = y;

    String[] words = s.split(" ");

    for (String word : words)
    {
        // Find out thw width of the word.
        int wordWidth = fm.stringWidth(word + " ");

        // If text exceeds the width, then move to next line.
        if (curX + wordWidth >= x + width)
        {
            curY += lineHeight;
            curX = x;
        }

        g.drawString(word, curX, curY);

        // Move over to the right for next word.
        curX += wordWidth;
    }
}

Cette implémentation séparera le String donné en un tableau de String en utilisant le split méthode avec un caractère d'espace comme seul séparateur de mots, donc ce n'est probablement pas très robuste. Il suppose également que le mot est suivi d'un caractère d'espace et agit en conséquence lors du déplacement de la position curX.

Je ne recommanderais pas d'utiliser cette implémentation si j'étais vous, mais probablement les fonctions nécessaires pour faire une autre implémentation utiliseraient toujours les méthodes fournies par le FontMetrics classe.

 17
Author: coobird, 2008-12-30 16:07:49

Pour l'habillage de mots, vous pourriez être intéressé par Comment afficher une chaîne sur plusieurs lignes à l'aide de graphiques. Pas de justification ici, pas sûr que ce soit facile (ou impossible!) ajouter...

 1
Author: PhiLho, 2017-05-23 10:32:49