码迷,mamicode.com
首页 > 其他好文 > 详细

绘制基线和字符串边框

时间:2015-06-15 16:07:46      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

package font;
import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;
public class fontTest {
    public static void main(String[] args){
        EventQueue.invokeLater(new Runnable(){
            public void run(){
                JFrame frame = new fontFrame();
                frame.setTitle("fontTest");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}

class fontFrame extends JFrame{
    public fontFrame(){
        add(new fontComponent());
        pack();
    }
}

class fontComponent extends JComponent{
    private static final int D_width=300;
    private static final int D_height=200;
    public void paintComponent(Graphics g){
        Graphics2D g2 = (Graphics2D)g;
        String message = "Hello World!";
        Font f = new Font("Serif",Font.BOLD,36);
        g2.setFont(f);
        
        FontRenderContext context = g2.getFontRenderContext();
        Rectangle2D bounds =f.getStringBounds(message, context);
        double x = (getWidth()-bounds.getWidth())/2;
        double y = (getHeight()-bounds.getHeight())/2;
        
        double ascent = -bounds.getY();
        double baseY = y+ascent;
        g2.drawString(message,(int)x,(int)baseY);
        g2.setPaint(Color.LIGHT_GRAY);
        
        g2.draw(new Line2D.Double(x,baseY,x+bounds.getWidth(),baseY));
        Rectangle2D rect = new Rectangle2D.Double(x,y,bounds.getWidth(),bounds.getHeight());
                      g2.draw(rect);
    }
    public Dimension getPreferredSize(){
        return new Dimension(D_width,D_height);
    }
}

 

绘制基线和字符串边框

标签:

原文地址:http://www.cnblogs.com/hugh0510/p/4577668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!