我正在为Swing的学校作业编写用于克朗代克纸牌游戏的GUI。我正在努力的是这个。我无法使用偏移量相互显示卡片,如下图所示:
我已经尝试了一些布局管理器,比如GridBagLayout或OverlayLayout,我不能让它们中的任何一个工作。这是我目前的代码:
在这里,我创建一个新的JPanel,将其设置为OverlayLayout,调用RenderPack,它显示在下一个片段中,并附加到父JPanel,即GridBagLayout。
JPanel p = new JPanel();
LayoutManager layout = new OverlayLayout(p);
p.setLayout(layout);
RenderPack pack = new RenderPack(stack,p);
pack.drawStack();
this.location.gridy = 1;
this.location.gridx = i;
this.add(p,location);
这是一个文件,我从堆栈中渲染每张卡片(RenderCard.getLabel()只返回带有卡片ImageIcon的标签。)并将其附加到父容器。
package ui;
import backend.model.cards.interfaces.ICardStack;
import javax.swing.*;
public class RenderPack
{
ICardStack stack;
JPanel parent;
public RenderPack(ICardStack stack, JPanel parent)
{
this.stack = stack;
this.parent = parent;
}
public void drawStack()
{
for (int i = this.stack.size() - 1; i >= 0; i--)
{
RenderCard card = new RenderCard(this.stack.get(i));
JLabel label = card.getLabel();
if (i != 0)
{
label.setAlignmentY(-0.2f*i);
}
this.parent.add(label);
}
}
}
我正在寻找这个问题的提示是使用OverlayLayout来实现我想要的方式,或提示另一个更合适的布局管理器。感谢