我需要在屏幕上绘制一些内容,但这需要正确绘制字体指标。我还需要使用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)
}
答案 0 :(得分:2)
问题是,我不能告诉它画自己。
您只需在组件上使用repaint()
即可。 repaint()方法将调用paint(),而paint()又调用paintComponent()。有关详细信息,请参阅A Closer Look at the Paint Mechanism。
我将它设置为变量并使用该字体对象而不是使用g.getFont()
从上面给出的教程链接中你会看到你应该重写paintComponent()而不是paint(),所以这不是问题。