- - PR -
描画用パネルとそれ以外のパネルの両立
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-08-23 19:03
こんにちは。
Swingのアプレットを作成していて、上にボタンがあるパネル、下に描画用のパネルを配置したいのですが、ボタンのあるパネルを追加すると下にあるはずの描画用のパネルが表示されずに困っています。 ボタンのあるパネルをコンテナに追加せず、さらに描画用のパネルをコンテナに追加する際にSouthなどの位置指定をしなければ正常に描画されるのですが、そうでないとボタンだけしか表示されません。 例としては以下のような感じです。原因が分かる方いらっしゃいましたらよろしくお願いいたします。 -------------------------------------------------------------- import javax.swing.*; import java.awt.*; /* <APPLET CODE="Test.class" height=350 width=200></APPLET> */ public class Test extends JApplet { private JButton button = new JButton ("Button"); private JPanel bPanel = new JPanel(); private DrawPanel dPanel = new DrawPanel(); public void init() { Container c = getContentPane(); bPanel.add(button); c.add(bPanel, "North"); // ここでaddせず、さらに c.add(dPanel, "South"); // ここでSouthの指定をしないと円が描画される } private class DrawPanel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); g.fillOval (50, 50, 100, 100); } } } -------------------------------------------------------------- | ||||
|
投稿日時: 2003-08-23 22:17
こんばんは。 まずは、Containerに対するLayoutをセットしてください。 North/Southのような配置を行う場合は、BorderLayoutとなります。 この場合、Center以外の場所に関しては、 JPanel等のpreferredSizeを元に表示サイズが設定されるようですので、 その値をセットすると表示されるようになります。 #余談ですが、配置位置をセットする際、 私の場合はBorderLayout.NORTHのように定数を利用しています。 | ||||
|
投稿日時: 2003-08-24 01:10
syoさん、回答ありがとうございました。
setPreferredSizeでサイズを指定したところ、どちらも表示されました。 >私の場合はBorderLayout.NORTHのように定数を利用しています。 SunのJava2 APIのページでもそのように書かれていますね。私もこちらの 書き方に直しておきます。 とにかく、とても助かりました。ありがとうございました。 | ||||
1
