使用Java和

时间:2017-05-07 17:27:46

标签: java swing

我正在为Swing的学校作业编写用于克朗代克纸牌游戏的GUI。我正在努力的是这个。我无法使用偏移量相互显示卡片,如下图所示:

https://i.stack.imgur.com/v6p27.jpg

我已经尝试了一些布局管理器,比如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来实现我想要的方式,或提示另一个更合适的布局管理器。感谢

0 个答案:

没有答案