[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Frame内 の Panelの描画について




天野です

ちょっと行き詰まってしまったので教えて下さい。

Frame に add した Panel のサイズ分だけ四角を表示、つまり Panel の領域
を表示したいのですが、add した後に TestPanel.paint を呼ぶとFrame のサイズ
を取得してしまいます。
Panel オブジェクトをgetSize() していると思うのですが、Frame のサイズ
を取得してしまうのはなぜでしょう。

と、書いている途中に解決してしまった(^^;)

が、なぜPanel オブジェクトをgetSize() しているはずなのに、Frame のサイズ
を取得してしまうのだろう。

んー、何か思い違いをしているのでしょうか?


import java.awt.*;

class Test extends Frame{   
    static final int SIZE = 64;
    public static void main(String arg[]){
        
        
        Test test = new Test();
        test.setSize(200,200);
        TestPanel panel = new TestPanel();
        panel.setBounds(0,0,SIZE,SIZE);
        
        test.add(panel);        
        test.setVisible(true);
    
    }   
    public void paint(Graphics g){
    }
}
class TestPanel extends Panel{
    Dimension size;
    public TestPanel(){
        this.setSize(Test.SIZE,Test.SIZE);
        size = this.getSize();
        System.out.println("IN CONSTRACTOR IS " 
                            + "WIDTH= " + size.width 
                            + "HEIGHT= " + size.height);
    }
    public void paint(Graphics g){        
        //Dimension size = this.getSize();        // ←ここをコメントアウ
トするとうまくいくが・・
        g.drawRect(0,0,size.width-2,size.height-2);
        System.out.println("IN DRAW IS "
                            + "WIDTH= " + size.width 
                            + "HEIGHT= " + size.height);
    }
}

-- masahiro AMANO