gpt4 book ai didi

java - SetIcon 空指针异常

转载 作者:行者123 更新时间:2023-11-29 05:21:32 26 4
gpt4 key购买 nike

这是一个小程序。该方法应将按钮上的图标设置为一组预定义的图标。但是当我启动该程序时,我得到一个 NullPointerException。

方法

public void SetIcon(boolean isActive) {
ImageIcon IconBold, IconClipboard, IconKursiv, IconUnderline;
Ressources Temp;
if (isActive) {
Temp = new RessourcesAlternate();
} else {
Temp = new RessourcesStandard();
}
IconBold = new ImageIcon(Temp.getBold());
IconClipboard = new ImageIcon(Temp.getClipboard());
IconKursiv = new ImageIcon(Temp.getKursiv());
IconUnderline = new ImageIcon(Temp.getUnderline());

this.btnBold.setText("");
this.btnBold.setIcon(IconBold);

this.btnClipboard.setText("");
this.btnClipboard.setIcon(IconClipboard);

this.btnKursiv.setText("");
this.btnKursiv.setIcon(IconKursiv);

this.btnUnderline.setText("");
this.btnUnderline.setIcon(IconUnderline);
}

界面

public interface Ressources {
public URL getBold ();;
public URL getClipboard ();
public URL getUnderline ();
public URL getKursiv ();
}

类(class)标准

public final class RessourcesStandard implements Ressources{

final URL CLIPBOARD = Main.class.getResource("Icons/standard/clipboard-icon.png");

final URL BOLD = Main.class.getResource("Icons/standard/bold-icon.png");

final URL UNDERLINE = Main.class.getResource("Icons/standard/underline-icon.png");

final URL KURSIV = Main.class.getResource("Icons/standard/italic-icon.png");

@Override
public URL getBold() {
return BOLD;
}

@Override
public URL getClipboard() {

return CLIPBOARD;
}

@Override
public URL getUnderline() {
return UNDERLINE;
}

@Override
public URL getKursiv() {
return KURSIV;
}
}

类替代

public final class RessourcesAlternate implements Ressources{

final URL CLIPBOARD = Main.class.getResource("Icons/alternate/clipboard-icon.png");

final URL BOLD = Main.class.getResource("Icons/alternate/bold-icon.png");

final URL UNDERLINE = Main.class.getResource("Icons/alternate/underline-icon.png");

final URL KURSIV = Main.class.getResource("Icons/alternate/italic-icon.png");

@Override
public URL getBold() {
return BOLD;
}

@Override
public URL getClipboard() {

return CLIPBOARD;
}

@Override
public URL getUnderline() {
return UNDERLINE;
}

@Override
public URL getKursiv() {
return KURSIV;
}

}

错误信息:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at de.test.Editor.GUI_Tapped.SetIcon(GUI_Tapped.java:262)
at de.test.Editor.GUI.<init>(GUI.java:79)
at de.test.Editor.Main.main(Main.java:23)

GUI 是我的主框架GUI_Tapped 在可能打开的选项卡上


好的,

URL 对象存在一些问题。他们返回 Null。我编辑了整个 Thing 并使用字符串而不是 URL。现在可以使用了。

谢谢

最佳答案

如果您的 NullPointerException 发生在您对 JButton 调用 setIcon(...) 的行中,那么您的 JButton 可能为空。检查在抛出 NPE 的行上调用其方法的对象,您会看到。

更重要的是,您需要了解如何调试 NPE(NullPointerException)的一般概念。您应该仔细检查抛出它的那一行,找出哪个变量为空,然后回溯到您的代码中以查看原因。你会一次又一次地遇到这些,相信我。

例如,您的堆栈跟踪有一个关键行:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at de.test.Editor.GUI_Tapped.SetIcon(GUI_Tapped.java:262) // ***** here *****
at de.test.Editor.GUI.<init>(GUI.java:79)
at de.test.Editor.Main.main(Main.java:23)

这一行是堆栈跟踪的第一行,它引用了一个您的类,因此这行可能导致抛出 NPE。请仔细检查,请追溯到您的变量应该初始化的地方,您可能会解决问题。

关于java - SetIcon 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24496686/

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