Java字体前进,字符宽度

时间:2012-05-20 03:51:56

标签: java fonts fontmetrics

上下文

以下代码生成“漂亮”的"Hello World"

graphics.drawString("Hello World", 30, 30);

现在,如果相反,我会绘制每个字符串,并按fontMetrics.getCharWidth(c)手动前进,然后我会看到一个狭窄/拥挤的"Hello World"

问题

为什么会这样?除了每个角色的“前进”之外,还需要添加什么来确保角色间隔良好?

1 个答案:

答案 0 :(得分:2)

您使用Graphics中的哪个方法来渲染char? 这是我编写的代码,它运行完美,两种渲染方法的结果完全相同, 你能分享一下你的代码吗?

public class Test1 extends JPanel{

public static void main(String[] args) {

    Test1 test = new Test1() ;

    JFrame frame = new JFrame() ;
    frame.add(test) ;
    frame.setSize(800 , 600) ;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
    frame.setVisible(true) ;

}


@Override
public void paint(Graphics g) {     
    String text = "This is a text , Hello World!" ;

    g.drawString(text, 0, 100) ;        
    drawString(text, g, 0, 120) ;       
}

private void drawString (String s , Graphics g , int x , int y){
    for (int c1=0 ; c1 < s.length() ; c1++){

        char ch = s.charAt(c1); 
        g.drawString(ch+"", x, y) ;
        x+= g.getFontMetrics().charWidth(ch) ;
    }
}

}