2012-04-10 8 views
1

문자열 밖의 사각형 테두리가있는 그래픽을 사용하여 문자열을 그려야합니다.직사각형 테두리가있는 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); 

답변

3

을 주셔서 감사합니다. 당신이 예 얼마나 많은 라인의 기록을 유지

봅니다 :이 문자열을 그리는 y 값을 어떻게 작동하는지

int numberOfLines=0; 

for (String line : str.split("\n")) { 
    g2d.drawString(line, x , y + (numberOfLines * height)); 
    numberOfLines++; 
} 

g2d.drawRect(x - 2, y - height + 2, width + 4, height * numberOfLines); 

이도 변경됩니다.

그와 비슷한 것이 있습니까?

+0

높이를 약간 변경했습니다. g2d.drawRect (x - 2, y - 높이 * numberOfLines + 2, width + 4, height * numberOfLines); – Crazenezz

+0

달콤한, 다행스럽게 도와 줬어. –

1

일반 JLabel 개체를 만든 다음 텍스트를 html로 설정하고
태그를 포함 할 수도 있습니다. 예 : myLabel.setText("<html>aString<br>Test</html>");, JLabel에 한 줄의 테두리를 추가하십시오.