Java ImageIcon赢得';t显示

Java ImageIcon赢得';t显示,java,imageicon,blackjack,Java,Imageicon,Blackjack,MacOSX 网虫 爪哇 目标:21点计划。。。我正试图获得一张扑克牌的图像图标以显示在JLabel中 逻辑: 我创建了一些卡片对象,并使用一种方法返回与之关联的imageIcon。 在我的主GUI类中,如果我创建指定文件位置的新imageIcon,它将起作用- private void newGame(){ String temp1, temp2, temp3, temp4; card1 = hand.dealHand(); card2 = hand.dea

MacOSX 网虫 爪哇

目标:21点计划。。。我正试图获得一张扑克牌的图像图标以显示在JLabel中

逻辑: 我创建了一些卡片对象,并使用一种方法返回与之关联的imageIcon。 在我的主GUI类中,如果我创建指定文件位置的新imageIcon,它将起作用-

    private void newGame(){

    String temp1, temp2, temp3, temp4;

    card1 = hand.dealHand();
    card2 = hand.dealHand();
    card3 = hand.dealHand();
    card4 = hand.dealHand();

    image1 = new ImageIcon();
    image1 = card1.getImage();


    //Creates DeckImage and Logo as JLabel and adds it to userPanel

    //image1 = new ImageIcon("/Users/philhunter/NetBeansProjects/PractingProgramming/src/Resources/1.png");


    card1Label = new JLabel(image1, JLabel.LEFT);
    userPanel.add(card1Label);

    card1Label.setText("");

}
注释掉的行工作正常并显示imageIcon图像,但当我使用card1.getImage()方法时,图像不会显示。方法很简单-

public ImageIcon getImage(){
    return this.image;
}
此外,如果您需要它,下面是从DECK类创建卡的方法-

private ImageIcon C1,C2, ... ,C52;
private ImageIcon[] imageArray= { C1,C2,...,C52 };
C1 = new ImageIcon("/Users/philhunter/NetBeansProjects/PractingProgramming/src/Resources/1.png");
...
C52 = new ImageIcon("/Users/philhunter/NetBeansProjects/PractingProgramming/src/Resources/52.png");

int SUITS = suit.length;
    int RANKS = rank.length;
    int N = SUITS * RANKS;

    //Creates a deck of 52 CARD objects
    theDeck = new CARD[N];
    for (int i = 0; i < RANKS; i++) {
        for (int j = 0; j < SUITS; j++) {
            //deck[SUITS*i + j] = rank[i] + " of " + suit[j];
            card = new CARD(suit[j], rank[i], value[i], imageArray[SUITS*i + j]);
            theDeck[SUITS*i + j] = card;
        }
    }
专用图像图标C1、C2、,C52;
私有ImageIcon[]imageArray={C1,C2,…,C52};
C1=新图像图标(“/Users/philhunter/NetBeansProjects/PractingProgramming/src/Resources/1.png”);
...
C52=新图像图标(“/Users/philhunter/NetBeansProjects/PractingProgramming/src/Resources/52.png”);
int SUITS=suit.length;
int RANKS=rank.length;
int N=诉讼*等级;
//创建一组52个卡片对象
theDeck=新卡[N];
for(int i=0;i

所以我的问题是,为什么卡图像图标不显示?(我没有收到任何错误消息)

好的,因此我发现了问题。我没有正确地用imageIcons初始化数组imageArray[]。愚蠢的错误,但我想我会把这个忘了,以防其他人也犯这个愚蠢的错误。:)

我假设
imageArray[SUITS*I+j]
是一个包含
ImageIcon
s的数组。您确定它已正确初始化吗?那个
C1
变量是什么?是的,它是一个包含ImageIcon的数组。C1变量是DECK类中的一个ImageIcon,如上图所示。我编辑了上面的DECK类,以显示我是如何初始化数组的。您应该检查
卡的
构造函数。您是否确认构造函数中的标签已正确初始化并添加到
用户面板
?尝试用一些文本而不是图像绘制标签。这可能有助于找到错误。另一个建议是更换
C1。。C52
实例化,带有
for
循环。它将为您节省大量代码。用
arrayList
代替
array
会更方便。