java中关于setbounds的问题

publicclassSetBoundsTestextendsJFrame{JPaneljp1,jp2;JButtonjb1,jb2;publicSetBoundsTes... public class SetBoundsTest extends JFrame{
JPanel jp1,jp2;
JButton jb1,jb2;

public SetBoundsTest(){
jp1=new JPanel();
jp2=new JPanel();

jp1.setLayout(null);//将两个面板的布局管理器都设为空
jp2.setLayout(null);

jb2=new JButton("别点我");
jb1=new JButton("点我");

jb1.setBounds(0, 230, 100, 20);
jb2.setBounds(0, 220, 100, 20);
//按道理说上面的按钮中jb2会显示上面一半,下半部分被jp1遮住了,但结果确实jb2显示了全部,jb1不显示。

jp1.add(jb1);
jp2.add(jb2);

this.add(jp1,BorderLayout.SOUTH);
this.add(jp2);

this.setSize(400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
SetBoundsTest setBoundsTest=new SetBoundsTest();
}
}

上面着这小段代码我试了好久,当我把空布局的panel定在frame的north,south等等,panel为什么就失去效果了???里面添加的按钮定也不显示???貌似得出个结论就是空布局panel不能被添加在边界布局的四个方位???

另外有个小问题就是setbounds里面的坐标是相对于上一级容器的还是相对于frame窗口的?求高人指点~~~~感激涕零~~
展开
 我来答
zakaz168
推荐于2016-08-31 · TA获得超过345个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:228万
展开全部
//        jp1.setLayout(null);//将两个面板的布局管理器都设为空
//        jp2.setLayout(null);

屏蔽这两行就可以了

更多追问追答
追问
我设为空我就不能用setbounds呀?我想用setbounds手动来定坐标和大小~~
我设为空我就不能用setbounds呀?我想用setbounds手动来定坐标和大小~~
mzocean
2013-06-01 · TA获得超过1083个赞
知道小有建树答主
回答量:492
采纳率:33%
帮助的人:472万
展开全部
1、把layout设置为null表示该容器不使用布局管理器,也就是说加入该容器的每个组件都要设置位置和大小:setLocation,setSize,setBounds。否则组件就无法显示。
2、JFrame默认的内容窗格上会设置有 BorderLayout 管理器,因此往里面加组件时最好使用add(component,index)方法,如果直接使用add(component)就是加在CENTER处。
3、setBounds是相对于父组件,也可以称之为上一级容器。
希望能帮到你。
更多追问追答
追问
谢谢你,但是我上述代码中 jp1是用的this.add(jp1,BorderLayout.SOUTH)添加的,而且里面的jb1我也是使用了jb1.setBounds(0, 230, 100, 20)设置了位置和大小,但是jp1和jb1始终显示不出来,请教下大哥是怎么回事呀?而且我又试了,除了添加到CENTER的能显示出来,WEST,NORTH.SOUTH,EAST都显示不出来
追答
jb1.setBounds(0, 230, 100, 20)表示在位置(0,230)处创建,所以你看不见,可以改成jb1.setBounds(0, 0, 100, 20)试试。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式