Заменить изображение jLabel на изображение, соответствующее пути массива? - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над школьным проектом, в котором мы должны сделать карточную игру с использованием Java. Я немного поработал над этим (используя графический интерфейс, у меня появился экран выбора и все такое), и в настоящее время я пишу код для переворачивания карточек, когда вы нажимаете кнопку (вспомните карточную игру WAR). Карты игрока хранятся в двумерном массиве (cardDeck [playernum] [cardnum]). CardDeck создается из пользовательского класса Card, который я создал, и я могу вернуть значения номера карты и масти. Я сделал несколько папок в каталоге проекта, соответствующих каждой масти, в каждой есть 13 файлов изображений, помеченных соответственно от 1.png до 13.png. Я хочу иметь возможность вызывать изображение, основываясь на том, какая верхняя карта пользователя (например, возвращаемые значения равны 9 и сердечкам, поэтому я хочу найти 9 червей в своем каталоге изображений). Я попытался использовать следующий код для хода игрока 1:

switch (playerTurn){
            case 1:
                Card value = playerDecks[0][0];
                int cardVal = value.returnUltimate();
                String cardSu = value.returnCardSuite();
                ImageIcon newIcon = new ImageIcon(getClass().getResource("../../card game icons/" + cardSu + "/" + cardVal + ".png"));
                jLabel3.setIcon(newIcon);
                jLabel3.revalidate();

        }

Однако, когда я компилирую это с остальной частью моего кода, я получаю это:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
at cards.wargame.jButton1ActionPerformed(wargame.java:151)
at cards.wargame.access$000(wargame.java:14)
at cards.wargame$1.actionPerformed(wargame.java:66)

Как мне заставить это работать?

...