2012-05-31 3 views
1

예를 들어, 너비가 500이고 높이가 100 인 Jpanel이 있습니다. 나는 화면의 중심을 세로 (y)로 그리고 가로 (x)로 계산하는 수식을 가지고있다. 어느 drawString (myText, x, y)하지만 사용하는 텍스트를 jpanel 경계 위에 씁니다. 여기 내 paintComponent 코드를 사용하고 있습니다.Java drawString은 경계 위의 문자열을 드로잉합니다.

protected void paintComponent(Graphics g) { 
     Graphics2D g2d = (Graphics2D)g; 
     String MenuString = Menu.get(MenuChannel); 
     fontMetrics = g2d.getFontMetrics(realFont); 
     g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
     g2d.setBackground(Color.PINK); 
     g2d.fillRect(0,0,getWidth(),getHeight()); 
     g2d.setColor(Color.WHITE); 
     g2d.setFont(realFont); 

     java.awt.geom.Rectangle2D rect = fontMetrics.getStringBounds(MenuString, g2d); 
     int textHeight = (int)rect.getHeight(); 
     int textWidth = (int)rect.getWidth(); 
     int panelHeight = getHeight(); 
     int panelWidth = getWidth(); 
     int x = (panelWidth - textWidth)/2; 
     int y = (panelHeight - textHeight)/2; 
     System.out.println("tH:" + textHeight + "\ntW:" + textWidth + "\npH:" + panelHeight + "\npW:" + panelWidth); 
     g2d.drawString(MenuString,x,y); 
} 

답변

3

예 -이 고통 - drawString 하단 라인 (또는 기본 텍스트 라인)으로 y를 사용하여 String을 그릴 것입니다. String을 Rectangle에 중심 맞추려면 그냥 FontMetrics을 사용하여 구현해야합니다.

+0

덕분에 FontRenderContext()를 대신 사용하여 jpanel의 중심에 문자열을 그리는 데 도움이되기를 바랍니다. FontRenderContext() getY()를 사용하십시오. drawstring의 y 좌표! – Fonzy

+0

@Fonzy, 작업 코드를 게시 할 수 있습니까? –

관련 문제