문제

Java2D에서 완전히 정당화 된 텍스트를 그릴 수있는 기존 코드를 아는 사람이 있습니까?

예를 들어, 내가 말하면 drawString("sample text here", x, y, width), 그 텍스트가 너비에 얼마나 잘 맞는지, 텍스트를 좋아 보이게하기 위해 간격을두고 기본 단어 랩핑을 수행 할 수있는 기존 라이브러리가 있습니까?

도움이 되었습니까?

해결책

가장 우아하거나 강력한 솔루션은 아니지만 다음은 Font 현재의 Graphics 반대하고 얻습니다 FontMetrics 텍스트를 그릴 위치를 찾아서 필요한 경우 새 라인으로 이동하려면 다음과 같습니다.

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;
    }
}

이 구현은 주어진 것을 분리합니다 String 배열로 String 사용함으로써 split 우주 문자를 유일한 단어 분리기로 사용하는 방법은 아마도 강력하지 않을 것입니다. 또한 단어가 공간 문자가 뒤 따르는 것으로 가정하고 그에 따라 움직일 때 그에 따라 행동합니다. curX 위치.

내가 당신이라면이 구현을 사용하는 것이 좋지 않지만 아마도 다른 구현을 위해 필요한 기능은 여전히 FontMetrics 수업.

다른 팁

단어 포장의 경우 관심이있을 수 있습니다 그래픽을 사용하여 여러 줄에서 문자열을 출력하는 방법. 여기서 정당화가없고, 추가하기가 쉽지 않은지 (또는 불가능한 지) 확실하지 않습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top