java panel以borderlayout添加到frame

importjava.awt.*;publicclassTestLayout{publicstaticvoidmain(String[]args){Framef=newF... import java.awt.*;

public class TestLayout{
public static void main(String[] args){
Frame f = new Frame("My");
Panel p1 = new Panel(new GridLayout(2, 1));
Panel p2 = new Panel(new GridLayout(2, 1));
Panel p3 = new Panel(new GridLayout(1, 2));
Panel p4 = new Panel(new GridLayout(1, 2));
Panel p5 = new Panel(new GridLayout(2, 2));

f.setLayout(new BorderLayout());
f.setLocation(300, 400);
f.setSize(300,200);
f.setBackground(new Color(204,204,255));

p1.setBackground(Color.blue);
p2.setBackground(Color.green);
p3.setBackground(Color.red);
f.add(p2, BorderLayout.EAST);
f.add(p1, BorderLayout.WEST);
f.add(p3, BorderLayout.CENTER);

f.setVisible(true);
}
}
这个 为什么 运行时就显示个P3的 其他两个为什么天添加不上呢?
展开
 我来答
skyyks0001
2011-07-28 · TA获得超过430个赞
知道小有建树答主
回答量:228
采纳率:100%
帮助的人:397万
展开全部
是这样的:
BorderLayout默认会压缩四周,即压缩North,South,West,East中的组件;同时扩展中心,即Center中的组件。由于你的WEST和EAST中的Panel都没有设置首选大小(调用setPreferredSize),所以会被压缩至没有宽度,就看不见了。
你只需要加上:
p1.setPreferredSize(new Dimension(xxx,xxx));
p2.setPreferredSize(new Dimension(xxx,xxx));
其中xxx填写数值就可以了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-07-28 · TA获得超过260个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:146万
展开全部
如果添加的面板没有任何具体的组件,就只能展示 中间区域的,你可以在 panel 上添加上几个按钮,就可以看到效果了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
糖酥棍儿
2011-07-28 · TA获得超过692个赞
知道小有建树答主
回答量:393
采纳率:0%
帮助的人:387万
展开全部
好像用 BorderLayout 这种布局方式时,你要是添加 对象的时候,如果添加的面板没有任何具体的组件,默认就只能展示 中间区域的,你可以在 panel 上添加上几个按钮,就可以看到效果了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
361090172
2011-07-28
知道答主
回答量:10
采纳率:0%
帮助的人:1.7万
展开全部
没看过panel有这样构造方法,组件的构造方法参数没见过是布局的。用frame的add()方法试试
GridLayout 创建一个对象就行了,也是用add()方法添加组件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式