0

画面に描画する必要があるものがありますが、正しく描画するにはフォント メトリックが必要です。また、 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)
}
4

1 に答える 1

2

問題は、自分自身をペイントするように指示できないことです。

repaint()コンポーネントで使用するだけです。repaint() メソッドは、paintComponent() を呼び出す paint() を呼び出します。詳細については、ペイント メカニズムの詳細を参照してください。

変数に設定し、g.getFont() を使用する代わりにそのフォント オブジェクトを使用します。

上記のチュートリアル リンクから、paint() ではなく paintComponent() をオーバーライドする必要があることがわかるため、これは問題ではありません。

于 2014-10-01T13:09:35.847 に答える