将JLabel部分显示在另一个JLabel的顶部



我想在GUI中显示卡片,我想重叠卡片以节省空间。然而,我似乎不能让它工作。我目前正在使用MigLayout,虽然感觉它更像是一个JLabel问题,而不是其他东西。

从更高的层次来描述它,考虑一下在现实生活中玩纸牌游戏。当你拿着卡片时,你只需要看到卡片的一部分,卡片的大部分被另一张卡片重叠,以此类推,直到最后一张卡片完全显示出来,因为上面没有任何东西。我想以一种只显示下面部分牌的方式重叠,然后顶部的牌完全显示。

当前的问题是,当我向JPanel添加JLabel时,它会将最新的标签放在已经存在的标签后面。我想把它放在已经存在的东西前面。我似乎找不到任何方法可以让我设置哪个标签在前面。

我想这样做:

将card1放在单元格0 0中把card2放在单元格0 0中,y的位置调换任何两张牌重叠的地方上面都有card2

简单地添加它就会把它放在后面,这表明组件的显示是先到先服务的优先级。我宁愿先到后得。就像我说过的,我一直没能找到一个方法来实现这些。

如果有任何不清楚的,请让我知道。

看起来JPanel继承了Container, Container有一个方法setComponentZOrder(),听起来它正是你需要的。

setCompoentZOrder()文档

查看重叠布局,它解释了更多关于ZOrder如何工作,甚至可能为您提供一个布局管理器来帮助您的卡牌游戏。

最新更新