문자열 밖의 사각형 테두리가있는 그래픽을 사용하여 문자열을 그려야합니다.직사각형 테두리가있는 drawString
이가있다 :
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
FontMetrics fontMetrics = g2d.getFontMetrics();
String str = "aString Test";
int width = fontMetrics.stringWidth(str);
int height = fontMetrics.getHeight();
int x = 100;
int y = 100;
// Draw String
g2d.drawString(str, x, y);
// Draw Rectangle Border based on the string length & width
g2d.drawRect(x - 2, y - height + 2, width + 4, height);
}
내 문제는 내가 외부 사각형 테두리 새로운 라인 ("\ n")를 가진 문자열을 그리려는 입니다 :
이
은 이미 할 것입니다 새 줄 코드 : public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
FontMetrics fontMetrics = g2d.getFontMetrics();
String str = "aString\nTest";
int width = fontMetrics.stringWidth(str);
int height = fontMetrics.getHeight();
int x = 100;
int y = 100;
// Drawing string per line
for (String line : str.split("\n")) {
g2d.drawString(line, x, y += g.getFontMetrics().getHeight());
}
}
누구든지이 문제를 해결할 수 있습니까? 만약 내가 제대로 이해하고 난 당신의 문제는 사각형의 높이입니다, 당신의 도움 & 제안 ...
최종 코드
int numberOfLines = 0;
for (String line : str.split("\n")) {
if(numberOfLines == 0)
g2d.drawString(line, x, y);
else
g2d.drawString(line, x, y += g.getFontMetrics().getHeight());
numberOfLines++;
}
g2d.drawRect(x - 2, y - height * numberOfLines + 2, width + 4, height * numberOfLines);
높이를 약간 변경했습니다. g2d.drawRect (x - 2, y - 높이 * numberOfLines + 2, width + 4, height * numberOfLines); – Crazenezz
달콤한, 다행스럽게 도와 줬어. –