gpt4 book ai didi

java - 使用 excel 中的字符串作为目录来更改 JLabel 中的图像

转载 作者:行者123 更新时间:2023-11-30 04:06:17 26 4
gpt4 key购买 nike

我觉得这是有史以来最准确的标题,并且准确地表达了我的需要。我正在用 Java 制作纸牌游戏,并将所有纸牌统计数据加载到电子表格中。我正在使用 JXL api 读取电子表格,并从电子表格中各自的单元格中获取每张卡的统计信息,并将它们存储在 Deck 对象中,一切都工作得非常好,但是当我尝试使用 getImage 的字符串时() 返回,我不断得到一个空指针,但我不明白为什么。我将发布我认为相关的所有内容,如果需要更多内容,请告诉我。

第一部分来自 LoadCards 类,它加载电子表格并将数据附加到 Deck 对象。注意:我在这里只有一次尝试作为测试,以确保它有效,但没有。

public class LoadCards 
{
public Deck LoadCards()
{
Workbook cardList = null;
try
{
cardList = Workbook.getWorkbook(new File("C:\\DC Card Game\\src\\DCCardGame\\resources\\CardList.xls"));
}
catch (IOException e)
{
String message = "The file titled CardList.xls was not found.";
String title = "File Not Found";
JOptionPane.showMessageDialog(null, message, title, JOptionPane.ERROR_MESSAGE);
} catch (BiffException ex)
{
String message = "File must have an extension of .xls";
String title = "Incompatible CardList File";
JOptionPane.showMessageDialog(null, message, title, JOptionPane.ERROR_MESSAGE);
}
Sheet typeSheet = cardList.getSheet(0);
Sheet equipmentSheet = cardList.getSheet(1);
String equipmentType = typeSheet.getCell(0,1).getContents();
Deck testCard= new Deck(equipmentSheet.getCell(0, 1).getContents(),equipmentType,Integer.parseInt(equipmentSheet.getCell(2,1).getContents()),Integer.parseInt(equipmentSheet.getCell(3,1).getContents()),Integer.parseInt(equipmentSheet.getCell(4,1).getContents()),equipmentSheet.getCell(5,1).getContents());

return testCard;

最后一行为 Deck 构造函数构建一个对象,如下所示:

public Deck(String cardName, String type, int cost, int value, int power, String image)
{
super();
}

Deck 扩展了 Card,所有适当的 getter/setter 都在其中。

public Card(String cardName, String type, int cost, int value, int power, String image)
{
this.cardName = cardName;
this.type = type;
this.cost = cost;
this.value = value;
this.power = power;
this.image = image;
}

在我的表单类中,这是我用来测试图像是否正常工作的代码(提示:它不工作。)它不断抛出 NullPointerException

LoadCards test = new LoadCards();
test.LoadCards();
ImageIcon testImage = new ImageIcon(getClass().getResource(test.LoadCards().getImage()));
extraLineupSlot1.setIcon(testImage);

我需要弄清楚如何纠正这个问题,以便我可以从电子表格中调用代表目录的字符串,该目录存储在 Deck/Card 对象的图像属性中,然后我可以调用它属性并更改与我制作的不同 JLabels 关联的图标。

最佳答案

听起来您可以获取字符串列表,但在获取相应的命名资源时遇到问题。在此相关example ,一个List<String>的名称与 List<ImageIcon> 共享一个共同索引用作存储在 JAR 中的资源的图像缓存。方法getImage(int index)从缓存中返回现有图像或通过 getResource() 加载图像备查。您可以比较一下您的方法。请参阅info对于 了解更多示例。

关于java - 使用 excel 中的字符串作为目录来更改 JLabel 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20649262/

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