gpt4 book ai didi

java - 一个 JLabel 的 setIcon 与一组 JLabel 的 setIcon 之间的差异

转载 作者:行者123 更新时间:2023-12-01 22:58:31 26 4
gpt4 key购买 nike

我正在尝试设计一个非常简单的图形界面,我将在其中使用加载了图标的 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);

只要我不使用 setIcon() 但复制我的代码来声明两次,使用 JLabel 数组也可以工作:

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]);

我在线程“main”java.lang.NullPointerException 中得到一个异常。我不知道为什么。我很确定图像的目录完全没问题(这是由另一个类处理的)。为什么仅当尝试在数组中设置 JLabel 时才会出现此问题?

这是我正在处理的一项任务,我不喜欢使用任何可能会更长的新代码作为解决方法。这应该是相当简单的,如果我能通过这一点,我实际上使用一个 for 循环将图标加载到 JLabels,然后另一个 for 循环将所有 JLabels 加载到桌面上(这是我已经设置的另一个类) )。任何帮助将不胜感激!

最佳答案

当您创建 JLabel[] 时,您正在创建标签数组。不是数组内部的标签。换句话说,创建数组后,数组元素仍然为 null。这就是为什么你的倒数第二位代码可以工作,但最后一段代码却不能——在最后一段代码中,你没有初始化数组中的元素,所以当你尝试对它们调用方法时,你会得到一个NullPointerException

关于java - 一个 JLabel 的 setIcon 与一组 JLabel 的 setIcon 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com