我如何像这样堆叠图像(卡片):

java - 水平堆叠卡片并有一定偏移-LMLPHP

到目前为止,这是我所拥有的,显然我正在尝试设置JLabel cardIcon的位置,每次我猜它都会被替换。

    JPanel tableMat = new JPanel();

            for (CardSet card : playersHand) {

                String path = dirPath + card.suit().toString()+"-"+card.rank().toString()+".gif";
                File file = new File(path);

                if (!file.exists()) {
                    System.out.println(path);
                    throw new IllegalArgumentException("file " + file + " does not exist");


                } else {
                    BufferedImage icon = ImageIO.read(new File(file.getAbsolutePath()));
                    JLabel cardIcon = new JLabel(new ImageIcon(icon));
                    cardIcon.setLocation(300,300);
                    tableMat.add(cardIcon);

                }

            }

最佳答案

tableMat = new JPanel()使用默认的FlowLayout对其进行初始化,因此cardIcon.setLocation(300, 300)将被忽略-调用tableMat.add(cardIcon)时,布局管理器将决定位置。

您需要从tableMat中删除布局管理器,例如tableMat = new JPanel(null)

当然,您还需要更新x坐标以将它们从左到右错开。
https://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

关于java - 水平堆叠卡片并有一定偏移,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32218170/

10-13 03:15