コンパイル時&ウインドウ表示異常


 以下のように書くと上図のような結果になる。原因が分からん!(探索中)。


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class cmcctest1
public static void main(String[] args){
mWindow mW = new mWindow();
}
}

class mWindow extends JFrame implements MouseListener{
int r = 20;
public mWindow(){
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseListener(this);
show();
}
public void paint(Graphics g){
}
public void mousePressed(MouseEvent e ){
}
public void mouseReleased(MouseEvent e ){
}
public void mouseClicked(MouseEvent e ){
Graphics g = getGraphics();
g.setColor(new Color(0,0,0));
g.drawOval(e.getX()-r,e.getY()-r,r*2,r*2);
g.dispose();
}
public void mouseEntered(MouseEvent e ){
}
public void mouseExited(MouseEvent e ){
}
}

 これを実行するとウィンドウが表示されるのはいいが、ウインドウの中身が描画されず、背後の画像をそのまま載せたまま(上図参照)、ウインドウの移動とともに持っていってしまう。
実はマウスリスナーは実装していないのでマウスイベントを全部削除してみる。すると正常に戻った(ウインドウの中が灰色になった。)で、削除したマウスイベントを元に戻してやると、今度は異常が起こらない。
 訳が分からない。呪われているのだろうか?
 しかもmWindowクラスにマウスリスナーを実装(extends JFrame の後ろにimplements MouseLisetnerを追加)したにもかかわらずマウスイベント処理のメソッドを全削除しても通常通り作動する。(下図↓)

おかしい。
 そこでフォルダを開いて見ると、mWindowクラスとmWindow$1(無名クラス?)クラスがコンパイルされて出来ていた。mWindowクラスだけを削除し、JCPadで三角ボタンを押す(コンパイル&実行)とcmccクラスは変更していないにもかかわらず黒窓から”mainスレッドにクラスが無い”というエラーが返ってきて動作が停止した。
 ここから考えられる事は、JCPadはファイル名と同じ名前のクラスの更新だけをチェックして、ソース上で併記されたクラス(ここではmWindowクラス)の変更はチェックしていないということだ。ファイル名と同じ名前のクラスに更新があった時のみまとめてコンパイルを行い、(つまりこの時だけ併記クラスのコンパイルを行う)、更新がない時は併記クラスにどんな変更があろうとも無視する。よって併記クラスの古いクラスファイルは保存されているので正常に作動するのだろう。
 しかしそれが分かったところでウインドウの異常表示は解消されない・・・。原因も不明・・・。JCPadが悪いのか、Javaが悪いのか、それともオレが悪いのか分からん。この怒りをどこにぶつけりゃいいんじゃァァァァァァァッ!!!!


追記:
 なお、正常作動したと思っていたが、ちょっといじってから再度コンパイルすると異常表示に逆戻り。「編集」→「元に戻す」→「コンパイル&実行」でも何が原因なのかも分からず仕舞い。
 タスケテー。