重绘()FontMetrics

时间:2014-10-01 11:43:20

标签: java swing fonts paintcomponent fontmetrics

我需要在屏幕上绘制一些内容,但这需要正确绘制字体指标。我还需要使用repaint()或其他东西直接在屏幕上绘制。

如果我有paintComponent(Graphics)方法,我可以通过g.getFontMetrics(g.getFont())正确检索字体指标。问题是,我不能告诉它画它的自我。它只在发生某些事情时才会这样做,例如正在调整组件的大小。

然后,如果我只使用普通paint(Graphics),我可以在需要时使用repaint()绘制,但调用g.getFontMetrics(g.getFont())不会返回正确的值。有什么想法吗?

repaint();//I need to call repaint() or something similar to draw to the screen when I want it to

public void paint(Graphics g){
    FontMetrics metrics = g.getFontMetrics(g.getFont());//Returns different metrics than that of paintComponent(Graphics)
}

public void paintComponent(Graphics g){
    FontMetrics metrics = g.getFontMetrics(g.getFont());//Returns different metrics than that of paint(Graphics)
}

1 个答案:

答案 0 :(得分:2)

  

问题是,我不能告诉它画自己。

您只需在组件上使用repaint()即可。 repaint()方法将调用paint(),而paint()又调用paintComponent()。有关详细信息,请参阅A Closer Look at the Paint Mechanism

  

我将它设置为变量并使用该字体对象而不是使用g.getFont()

从上面给出的教程链接中你会看到你应该重写paintComponent()而不是paint(),所以这不是问题。