我用Java创建纸牌游戏。我的GUI类中有一个JPanel(实际上是一个JLayeredPane),并且在处理它们时会将包含卡片图像的JLabel添加到它中。这些JLabel在我的Card类中生成,并使用getImage()方法调用。此方法返回JLabel,如下所示:
public JLabel getImage(){
String theCardName = getName()+getSuit();
theCardName = theCardName.replaceAll("\\s+","");
image = new ImageIcon(getClass().getResource("Images\\"+theCardName+".png"));
cardImage = new JLabel(image,JLabel.CENTER);
return cardImage;
}
在我的Gui课程中,我将卡片添加到JlayeredPane中,如下所示:
Card card = new Card();
jLayeredPane1.add(card.getImage(),new Integer(i));
i++ //this is just so each card is layered on top of the proceeding card.
除了我需要设置标签的边界,并希望在getImage()方法中这样做。所以我将这一行添加到getImage()方法:
cardImage.setBounds(5, 5, 60, 100); //(The first parameter in that method actually gets incremented every time the methods is called so the cards get spread out, but that's irrelevant)
这不起作用。当它返回到我的Gui类时,这些绑定参数似乎没有附带标签。
我必须做的就是在Gui课程中这样做:
Card card = new Card();
JLabel label = card.getImage();
label.setBounds(5, 5, 60, 100);
jLayeredPane1.add(label,new Integer(i));
i++;
但我更喜欢在getImage()方法中设置边界,原因有很多我不想进入。为什么我不能或有办法?