Question

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

Par exemple, si je disais, drawString ("exemple de texte ici", x, y, largeur) , existe-t-il une bibliothèque existante qui pourrait déterminer le pourcentage de ce texte dans le largeur, faites-vous un peu d'espacement entre les caractères pour que le texte paraisse bien, et faites automatiquement le retour à la ligne de base?

Était-ce utile?

La solution

Bien que n'étant pas la solution la plus élégante ni la plus robuste, voici une méthode qui prend Police du Graphics et obtenez son FontMetrics afin de savoir où dessiner 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 la String donnée en un tableau de String à l'aide de split avec un espace comme séparateur de mots donc ce n’est probablement pas très robuste. Il suppose également que le mot est suivi d'un espace et agit en conséquence lorsque vous déplacez la position curX .

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

Autres conseils

Pour habiller les mots, vous pourriez être intéressé par le titre Comment afficher une chaîne sur plusieurs lignes à l'aide de Graphics . Aucune justification ici, pas sûr s'il est facile (ou impossible!) D'ajouter ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top