Я пытаюсь создать очень простой графический интерфейс, в котором я буду добавлять некоторые изображения с помощью JLabel, загруженного со значком:
JFrame Table = new JFrame("Transporter Room");
Table.setSize(600, 600);
Table.setLocationRelativeTo(null);
Table.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Table.setLayout(new GridLayout(2, 2, 20, 20));
Моя проблема заключается в загрузке значков для массива JLabels... Что-то вроде этого работает:
JLabel playingCard = new JLabel(CardGUI.getIcon(myCard));
JLabel playingCard2 = new JLabel(CardGUI.getIcon(myCard2));
Table.add(playingCard);
Table.add(playingCard2);
Просто примечание: CardGUI.getIcon(ob)
— это просто статический метод, который правильно настраивает каталог и загружает значок с данным объектом карты.
Что-то вроде этого также работает (хотя значок не центрирован в макете.. почему?):
JLabel playingCard = new JLabel();
JLabel playingCard2 = new JLabel();
playingCard.setIcon(CardGUI.getIcon(myCard));
playingCard2.setIcon(CardGUI.getIcon(myCard));
Table.add(playingCard);
Table.add(playingCard2);
Использование массивов JLabel также работает, пока я не использую setIcon()
, но дублирую свой код, чтобы объявить дважды:
JLabel[] myLabel = new JLabel[2];
myLabel[0] = new JLabel(CardGUI.getIcon(myCard));
myLabel[1] = new JLabel(CardGUI.getIcon(myCard2));
Table.add(myLabel[0]);
Table.add(myLabel[1]);
Однако проблема возникает, когда я пытаюсь это сделать (и мне нужно сделать это по спецификации):
JLabel[] myLabel = new JLabel[2];
myLabel[0].setIcon(CardGUI.getIcon(myCard));
myLabel[1].setIcon(CardGUI.getIcon(myCard2));
Table.add(myLabel[0]);
Table.add(myLabel[1]);
Я получаю Execption in thread "main" java.lang.NullPointerException
. Понятия не имею почему. Я почти уверен, что каталог с изображением в порядке (об этом позаботится другой класс). Почему это происходит только при попытке настроить JLabel внутри массива?
Это задание, над которым я работаю, и я предпочитаю не использовать какой-либо новый код, который потенциально может быть длиннее в качестве обходного пути. Это должно быть довольно просто, если я смогу пройти этот этап, я буквально использую цикл for для загрузки значков в JLabels, затем еще один цикл for для загрузки всех JLabels на столешницу (это еще один класс, который я уже настроил ). Любая помощь будет принята с благодарностью!