[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