getStringBounds()返回的矩形顶部的Y坐标为负这是啥米意思??????????double x = (getWidth() - bounds.getWidth()) / 2;
double y = (getHeight() - bounds.getHeight()) / 2;double ascent = -bounds.getY();
double baseLineY = y+ascent;//这个能获得基线y坐标?????

解决方案 »

  1.   

    着是全部代码
    class FontPanelTest extends JPanel
    {  
       public void paintComponent(Graphics g)
       {  
          super.paintComponent(g);
          Graphics2D g2 = (Graphics2D) g;      String message = "Hello, World!";      Font f = new Font("Serif", Font.BOLD, 36);
          g2.setFont(f);      // measure the size of the message      FontRenderContext context = g2.getFontRenderContext();
          Rectangle2D bounds = f.getStringBounds(message, context);      // set (x,y) = top left corner of text      double x = (getWidth() - bounds.getWidth()) / 2;
          double y = (getHeight() - bounds.getHeight()) / 2;      // add ascent to y to reach the baseline      double ascent = -bounds.getY();
          double baseY = y + ascent;      // draw the message      g2.drawString(message, (int) x, (int) baseY);      g2.setPaint(Color.GRAY);      // draw the baseline      g2.draw(new Line2D.Double(x, baseY, x + bounds.getWidth(), baseY));      // draw the enclosing rectangle      Rectangle2D rect = new Rectangle2D.Double(x, y, bounds.getWidth(), bounds.getHeight());
          g2.draw(rect);
       }
    }
      

  2.   

    让字符串居中显示并绘制字符串基线和包括字符串的矩形
    但问题是 Rectangle2D rect = new Rectangle2D.Double(x, y, bounds.getWidth(), bounds.getHeight());中的x,y是矩形的左上角坐标吗真分明不是左下角坐标啊