3

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

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

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

我想做类似的事情:

将卡片 1 放入单元格 0 0 将卡片 2 放入单元格 0 0 并带有转置的 y 位置 两张卡片重叠的任何区域都有卡片 2 在顶部

只需添加它就会将其置于后面,这表明组件的显示具有先到先得的优先级。我宁愿有一个后到先得的优先权。就像我说过的那样,我没有运气试图找到一种允许任何这些的方法。

如果有任何不清楚的地方,请告诉我。提前致谢。

4

2 回答 2

6

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

setCompoentZOrder() 文档

于 2013-03-27T04:01:22.940 回答
5

查看Overlap Layout,它更详细地解释了 ZOrder 的工作原理,甚至可以为您提供一个布局管理器来帮助您进行纸牌游戏。

于 2013-03-27T05:10:09.760 回答