博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA:图形之利用FontMetrics类居中
阅读量:4707 次
发布时间:2019-06-10

本文共 2406 字,大约阅读时间需要 8 分钟。

1 //利用FontMetrics类居中 2 import javax.swing.*; 3 import java.awt.*; 4 public class TestCenterMessage extends JFrame{ 5    public TestCenterMessage(){ 6        CenterMessage messagePanel = new CenterMessage(); 7        add(messagePanel); 8        messagePanel.setBackground(Color.WHITE); 9        messagePanel.setFont(new Font("Californian FB",Font.BOLD,30));10     }11     public static void main(String[] agrs){12         JFrame frame = new TestCenterMessage();13         frame.setBounds(200,300,300,150);14         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);15         frame.setVisible(true);16     }17 }18 19 class CenterMessage extends JPanel{20    protected void paintComponent(Graphics g){21        super.paintComponent(g);22        23        //得到当前的font metrics24        FontMetrics fm = g.getFontMetrics();25        26        int stringWidth = fm.stringWidth("Welcome to Java");27        int stringAscent = fm.getAscent();28        29        int xCoordinate = getWidth()/2 - stringWidth/2;30        int yCoordinate = getHeight()/2 +stringAscent/2;31        32        g.drawString("Welcome to Java",xCoordinate,yCoordinate);33     }34 }

 

 对比:

仔细观察,字符串稍微偏高

1 import javax.swing.*; 2 import java.awt.*; 3 public class TestCenterMessage extends JFrame{ 4    public TestCenterMessage(){ 5        CenterMessage messagePanel = new CenterMessage(); 6        add(messagePanel); 7        messagePanel.setBackground(Color.WHITE); 8        messagePanel.setFont(new Font("Californian FB",Font.BOLD,30)); 9     }10     public static void main(String[] agrs){11         JFrame frame = new TestCenterMessage();12         frame.setBounds(200,300,300,150);13         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);14         frame.setVisible(true);15     }16 }17 18 class CenterMessage extends JPanel{19    protected void paintComponent(Graphics g){20        super.paintComponent(g);21        22        //得到当前的font metrics23        FontMetrics fm = g.getFontMetrics();24        25        int stringWidth = fm.stringWidth("Welcome to Java");26        int stringAscent = fm.getAscent();27        28        int xCoordinate = getWidth()/2 - stringWidth/2;29        //int yCoordinate = getHeight()/2 +stringAscent/2;30        int yCoordinate = getHeight()/2;31 32        g.drawString("Welcome to Java",xCoordinate,yCoordinate);33     }34 }

 

 

转载于:https://www.cnblogs.com/KeenLeung/archive/2012/05/31/2527208.html

你可能感兴趣的文章
tomcat 和MySQL的安装
查看>>
git常用操作
查看>>
京东SSO单点登陆实现分析
查看>>
u-boot启动第一阶段
查看>>
MySQL批量SQL插入性能优化
查看>>
定义列属性:null,default,PK,auto_increment
查看>>
用户画像展示
查看>>
C#中StreamReader读取中文出现乱码
查看>>
使用BufferedReader的时候出现的问题
查看>>
批处理文件中的路径问题
查看>>
hibernate出现No row with the given identifier exists问题
查看>>
为什么wait()和notify()属于Object类
查看>>
配置NRPE的通讯
查看>>
匹配两个空格之间的字符。。。
查看>>
CSS 文字溢出 变成省略号 ...
查看>>
Spring事务
查看>>
java编程基础(三)流程控制语句
查看>>
让数据库跑的更快的7个MySQL优化建议
查看>>
jquery 取id模糊查询
查看>>
解决在vue中,自用mask模态框出来后,下层的元素依旧可以滑动的问题
查看>>