根据你的叙述,如果所有子组件都在panel中的话,就将所有的子组件都以绝对方式来添加,即先设置子组件的坐标及大小,然后添加到panel中。如:
bgp=new JLabel(new ImagIcon("bgpic.jpg"));//背景图片大小:350*150
btn=new JButton("Test",new ImageIcon("flag.jpg"));//图标按钮大小:70*40
panel.setLayout(null);//以绝对方式添加组件,须将容器panel布局置空
bgp.setBounds(0,0,350,150);//坐标从x=0,y=0开始,它将按背景图片大小来占据北部空间
panel.add(bgp);
btn.setBounds(200,100,70,40);
panel.add(btn);//btn在bgp的范围内
panel.add(其它组件);//位置从x=0,y=150开始
/
如果想采用布局,可以将背景和图标按钮先加在一个容器中,再将这个容器加在panel的北部。如:
northPanel=new JPanel();
centerPanel=new JPanel();
panel.setLayout(new BorderLayout());
panel.add(northPanel,BorderLayout.NORTH);
northPanel.setLayout(null);
bgp.setBounds(x1,y1,w1,h1);
northPanel.add(bgp);
btn.setBounds(x2,y2,w2,h2);
northPanel.add(btn);
panel.add(centerPanel,BorderLayout.CENTER);
centerPanel.setLayout(某种布局);
centerPanel.add(其它组件);