Java Graphics.DrawString 교체를 사용한 완전 정당화?
문제
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
수업.
다른 팁
단어 포장의 경우 관심이있을 수 있습니다 그래픽을 사용하여 여러 줄에서 문자열을 출력하는 방법. 여기서 정당화가없고, 추가하기가 쉽지 않은지 (또는 불가능한 지) 확실하지 않습니다 ...
제휴하지 않습니다 StackOverflow