将JLabel部分显示在另一个JLabel之上

时间:2013-03-27 03:18:03

标签: java swing user-interface jlabel miglayout

我正在尝试在我的GUI中显示卡片,我想重叠卡片以节省空间。但是,我似乎无法让它发挥作用。我目前正在使用MigLayout,虽然感觉它更像是一个JLabel问题而不是其他问题。

要想在高层次上进行描述,请考虑在现实生活中玩纸牌游戏。当您正常拿着卡片时,您只需要看到卡片的一部分,因此大部分卡片都被另一张卡片重叠,等等,直到最后一张卡片完全显示,因为它上面没有任何东西。我希望重叠的方式是只显示下面的部分卡片,然后顶部的卡片完全显示出来。

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

我想做类似的事情:

将card1放入单元格0 0 将card2放入单元格0 0并转置y位置 两张牌重叠的任何区域都有顶部的牌2

简单地添加它就会把它放在后面,这表明在组件显示上有先到先得的优先级。我宁愿拥有最后的,先到先得的优先权。就像我说的那样,我没有运气试图找到一种允许任何这种方法的方法。

如果有任何不明之处,请告诉我。提前谢谢。

2 个答案:

答案 0 :(得分:6)

看起来JPanel继承自Container,它有一个方法setComponentZOrder(),听起来就像你需要的那样。

setCompoentZOrder() documentation

答案 1 :(得分:5)

查看Overlap Layout,了解ZOrder的工作原理,甚至可以为您提供布局管理器,以帮助您进行纸牌游戏。