開発覚え書き

ソフトウェアシステムの開発に関わるさまざまなことの覚え書き

paintComponentsに注意

2007-06-21 13:09:42 | Weblog
間が空いてしまった。その間はJavaScriptの勉強などをしていた。
結構面白いが、注意すべき点がいくつかある。何らかのまとめは後日。

今日はJavaではまった話。人のSwingプログラムのコードで表示が変になるものがあり、結構長い時間分からなかった。

public void paintComponent(Graphics g) {

     super.paintComponents(g);

となっていたのだ。正しくは

     super.paintComponent(g);

でなければならない。
で、これがコンパイル時も実行時もエラーにはならない。
protected void paintComponent(Graphics g) は javax.swing.JComponent のメソッドだが、
public void paintComponents(Graphics g) は java.awt.Container のメソッドになる。
JComponent は Container を継承しているため、paintComponents も使えるわけである。