将JLabel置于另一个JLabel之上,就像在纸牌游戏中一样

时间:2014-03-19 18:22:53

标签: java swing jframe jlabel

enter image description here

我必须使用Java和JFrame形式进行单人纸牌游戏。我已经设法将ace卡的图像添加到JLabel,并在点击时进行更改。我现在需要做的是将一张卡放在另一张卡上面,类似于上图。我猜我可以通过创建几个标签并将它们放在彼此之上来做到这一点。我不知道该怎么做,因为每次我创建一个标签时,它都放在卡片的顶部或下方。

2 个答案:

答案 0 :(得分:1)

大多数布局管理员都是二维的。要在彼此之上显示组件,您需要开始使用ZOrder。

查看专为此类布局设计的Overlap Layout

答案 1 :(得分:0)

一种可能的解决方案:

  • 创建一个垂直方向的BoxLayout。 (BoxLayout.Y_AXIS)并将该布局设置为JPanel。这将代表卡片。
  • 在使用JLabel向面板添加BoxLayout之前,请创建一个带有负顶部插图的空边框。例如:label.setBorder(new EmptyBorder(-30, 0, 0, 0));这将导致顶部的标签(卡)与底部卡重叠。您可以使用-30,直到找到合适的尺寸。

另一种可能的解决方案:

  • 使用JLayeredPane,其中每张卡的图层级别将按降序排列。