JLayeredPane类中添加label的方法以add命名的有三种重载形式
目录
//此方法的单参数版本是将组件添加到第0层,即等同于add(Component, JLayeredPane.DEFAULT_LAYER)
void add(Component)
//当第二个参数存在时,它是一个表示层的整数(但此处需为Interger类型)。
//*********如果此处为int类型的参数,则表示添加在默认层(JLayeredPane.DEFAULT_LAYER)的int位置上*************
void add(Component, Object)
//第三个参数出现时,表示组件添加在Object层的int位置上
void add(Component, Object, int)
对于JLayeredPane添加的组件来说,层数越大,代表越靠近表层,即会覆盖住层数较低的组件;
但对于同一层的组件来说,位置值越小,越靠近表面,与层数的排列规则相反。
1.一个参数的方法
该方法会将组件添加到默认的层,即JLayeredPane.DEFAULT_LAYER(0层)
2.两个参数的方法
(1)当第二个参数类型为Object时
private JFrame jf = new JFrame("测试JLayeredPane");
private JLayeredPane layeredPane = new JLayeredPane();
var data = new ContentPanel[]{new ContentPanel(10, 20, "蝙蝠侠", "batman.jpg"), new ContentPanel(90, 20, "竹子", "zhuzi.jpg"), new ContentPanel(50, 80, "熊猫", "熊猫.jpg")};
//创建三个显示的图片 添加到layeredPane中
layeredPane.add(data[0], JLayeredPane.MODAL_LAYER);
layeredPane.add(data[2], JLayeredPane.DEFAULT_LAYER);
layeredPane.add(data[1], Integer.valueOf(14));
此时就会将类型为Integer的14编译为layer,所以蝙蝠侠(200)盖住了竹子(14),竹子盖住了熊猫(0)
(2)第二个参数为int
private JFrame jf = new JFrame("测试JLayeredPane");
private JLayeredPane layeredPane = new JLayeredPane();
var data = new ContentPanel[]{new ContentPanel(10, 20, "蝙蝠侠", "batman.jpg"), new ContentPanel(90, 20, "竹子", "zhuzi.jpg"), new ContentPanel(50, 80, "熊猫", "熊猫.jpg")};
//创建三个显示的图片 添加到layeredPane中
layeredPane.add(data[0], JLayeredPane.MODAL_LAYER);
layeredPane.add(data[2], JLayeredPane.DEFAULT_LAYER);
layeredPane.add(data[1], 4);
此时,add会添加到默认层,即JLayeredPane.DEFAULT_LAYER,在该代码中竹子与熊猫处于同一层,并且竹子的position 参数为4,会自动往该层底部添加,即将position设为1,位于熊猫底部,而熊猫默认为0;
- 关于position
- 传入参数0,代表放在该层的最高处(最上面),传入-1代表最低处
- 传入[0,n-1](n为该层总的组件数)的某个值时,会放置在相应的position的位置
- 如果传入的position参数大于n-1,则默认往当前的底层放(即position会设置为新的n-1)
3.参数为三个的方法
该方法较简单,即第一个参数为组件,第二个为层数,第三个为position