我如何像这样堆叠图像(卡片):
到目前为止,这是我所拥有的,显然我正在尝试设置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/