Java中的JLayeredPane类中的add()方法说明

JLayeredPane类中添加label的方法以add命名的有三种重载形式

目录

1.一个参数的方法

2.两个参数的方法

   3.参数为三个的方法

//此方法的单参数版本是将组件添加到第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

Java解决元素层级被遮挡的方法有多种。以下是一些常见的方法: 1. 使用布局管理器(Layout Manager):Java提供了多个布局管理器,可以根据需要选择适合的布局来处理元素的层级关系。布局管理器可以自动处理元素的位置和大小,确保元素不会互相遮挡。 2. 调整组件的位置和大小:可以通过修改组件的坐标和尺寸来调整元素的层级关系。可以使用setBounds()方法或者其它相关的方法来实现。 3. 使用透明度(Opacity):通过设置组件的透明度,可以实现元素之间的覆盖和透明效果。可以使用setOpaque()方法将组件设置为透明,然后使用setAlpha()方法设置透明度的值。 4. 使用图层(LayeredPane):使用JLayeredPane可以创建多个图层,每个图层上可以放置一个或多个组件。通过调整图层的顺序,可以改变元素的层级关系。可以使用add()和setLayer()方法来添加和移动组件到不同的图层上。 5. 使用重叠窗体(Dialog):可以使用Java的对话框(Dialog)功能来实现元素之间的层叠效果。对话框可以有不同的层级,可以通过修改对话框的模态性和焦点来控制元素的层级关系。 6. 使用JavaFX:如果使用JavaFX来开发界面,可以使用StackPane来处理元素的层级关系。StackPane可以通过设置每个子组件的对齐方式和层级来控制元素的显示和遮挡关系。 总之,Java有多种方法可以解决元素层级被遮挡的问题,具体方法的选择取决于具体的需求和实现方式。以上提到的方法仅供参考,开发者可以根据实际情况选择合适的方法来解决问题。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值