java 异常 exception in thread awt-eventqueue-0 java.lang.nullpointerexception
当我们使用 java awt 包方法并且将 null 值传递给任何方法时,会发生 “awt-eventqueue-0”java.lang.nullpointerexception 异常。 本教程演示如何在 java 中解决此 nullpointerexception。
java 中线程“awt-eventqueue-0”java.lang.nullpointerexception 中的异常
当我们向 awt 包传递 null 值时,会发生“awt-eventqueue-0”java.lang.nullpointerexception。 nullpointerexception 异常是 java 中最常见的异常。
当满足以下任一条件时,将发生 nullpointerexception。
- 当访问和修改空对象字段时。
- 当我们从空对象调用方法时。
- 当访问和修改空对象的槽时。
- 获取任何空数组的长度时。
- 当我们尝试同步空对象时。
- 当我们抛出空值时。
让我们尝试一个在 java 中抛出“awt-eventqueue-0”java.lang.nullpointerexception 的示例。
package jiyik;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.timer;
@suppresswarnings("serial")
public class example extends jframe implements actionlistener , keylistener {
static dimension screen_size = new dimension(toolkit.getdefaulttoolkit().getscreensize());
insets scan_max = toolkit.getdefaulttoolkit().getscreeninsets(getgraphicsconfiguration());
int task_bar_size = scan_max.bottom;
static jframe start_screen = new jframe("start screen");
static jframe game_frame = new jframe("begin the game!");
static jlabel cow_label = new jlabel();
static int sky_int = 1;
static jlabel sky_label = new jlabel();
static int seconds = 1;
static boolean is_pressed = false;
public static void main(string[] args) {
new example();
}
public example() {
jpanel buttons_panel = new jpanel();
buttons_panel.setlayout(null);
start_screen.setsize(new dimension(screen_size.width - getwidth(), screen_size.height - task_bar_size - getheight()));
start_screen.setdefaultcloseoperation(jframe.exit_on_close);
start_screen.setvisible(true);
system.out.println(start_screen.getsize());
//buttons
jbutton start_button = new jbutton("start");
start_button.addactionlistener(this);
start_button.setsize((int) start_screen.getwidth()/7, (int) (start_screen.getheight()/15.36));
start_button.setbounds((start_screen.getwidth()/2) - start_button.getwidth()/2,((int)start_screen.getheight()/2) - start_button.getheight(),start_button.getwidth(),start_button.getheight());
start_button.setactioncommand("start");
buttons_panel.add(start_button);
start_screen.add(buttons_panel);
}
@override
public void actionperformed(actionevent action_event) {
object cmd_object = action_event.getactioncommand();
if(cmd_object == "start") {
start_screen.setvisible(false);
// getclass().getresource("/cow.png") and getclass().getresource("/grass.png") is giving null
// because there is no image in folder named cow.png or grass.png
imageicon cow_image = new imageicon(getclass().getresource("/cow.png"));
imageicon grass_image = new imageicon(getclass().getresource("/grass.png"));
game_frame.setdefaultcloseoperation(jframe.exit_on_close);
game_frame.setsize(start_screen.getsize());
game_frame.setvisible(true);
jpanel demo_panel = new jpanel();
demo_panel.setbackground(color.white);
demo_panel.setlayout(null);
demo_panel.setfocusable(true);
game_frame.add(demo_panel);
demo_panel.addkeylistener(this);
cow_label.setbounds( (start_screen.getwidth()/2)-105, (start_screen.getheight()/2)-55, 210, 111);
cow_label.seticon(cow_image);
demo_panel.add(cow_label);
demo_panel.setvisible(true);
cow_label.setvisible(true);
jlabel grass_label = new jlabel();
system.out.println("grass");
// getclass().getresource("/sky.png") will throw a nullpointerexception because there is no image in the folder
imageicon sky1 = new imageicon(getclass().getresource("/sky.png"));
sky_label.seticon(sky1);
grass_label.seticon(grass_image);
grass_label.setbounds(0, ( start_screen.getheight()-308), start_screen.getwidth(), 350);
system.out.println("moooow");
demo_panel.add(grass_label);
sky_label.setbounds(1, 56, 1366, 364);
demo_panel.add(sky_label);
system.out.println("google");
}
}
@override
public void keypressed(keyevent key_event) {
int cmd_int = key_event.getkeycode();
// getclass().getresource("/cow moving.gif") will throw a nullpointerexception because there is no image in the folder
imageicon moving_cow = new imageicon(getclass().getresource("/cow moving.gif"));
system.out.println(cmd_int);
is_pressed = true;
if(cmd_int == 39){
system.out.println("key is pressed");
cow_label.seticon(moving_cow);
}
else if(cmd_int == 37){
}
system.out.println("end");
while(is_pressed==true){
timer wait_please = new timer("wait please");
try {
wait_please.wait(1000);
}
catch(interruptedexception p){}
int sky = 1;
sky = 1;
string sky_string = "/sky" string.valueof(sky) ".png";
imageicon sky = new imageicon(getclass().getresource(sky_string));
sky_label.seticon(sky);
if(is_pressed==false){
wait_please.cancel();
break;
}
}
}
@override
public void keyreleased(keyevent key_event) {
// getclass().getresource("/cow.png") and getclass().getresource("/grass.png") is giving null
// because there is no image in folder named cow.png or grass.png
imageicon cow_image = new imageicon(getclass().getresource("/cow.png"));
int cmd_int = key_event.getkeycode();
is_pressed = false;
if(cmd_int == 39){
cow_label.seticon(cow_image);
}
else if(cmd_int == 37){
cow_label.seticon(cow_image);
}
}
@override
public void keytyped(keyevent c) {
// todo auto-generated method stub
}
}
上面的代码是关于一个简单的游戏,一头牛站着,按下按钮时牛就会开始移动。 它将抛出“awt-eventqueue-0”java.lang.nullpointerexception,因为 awt 方法 new imageicon(getclass().getresource())
正在获取 null 条目。
该代码的输出是:
exception in thread "awt-eventqueue-0" java.lang.nullpointerexception: cannot invoke "java.net.url.toexternalform()" because "location" is null
at java.desktop/javax.swing.imageicon.(imageicon.java:234)
at jiyik.example.actionperformed(example.java:48)
at java.desktop/javax.swing.abstractbutton.fireactionperformed(abstractbutton.java:1972)
at java.desktop/javax.swing.abstractbutton$handler.actionperformed(abstractbutton.java:2313)
...
我们可以通过将图像移动到类文件夹路径来解决这个问题。 我们还可以删除 /,因为 windows 在 java 中使用 \ 作为路径。
如果仍然不起作用,我们可以提供图像的完整路径。 进一步的解释在上面的代码中被注释掉了。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
do you understand javascript closures?
发布时间:2025/02/21 浏览次数:108 分类:javascript
-
the function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. a closure itself is a core concept in javascript, and being a core concept, it is naturally also a difficult one.
do you know about the hidden traps in variables in javascript?
发布时间:2025/02/21 浏览次数:178 分类:javascript
-
whether you're just starting to learn javascript or have been using it for a long time, i believe you'll encounter some traps related to javascript variable scope. the goal is to identify these traps before you fall into them, in order to av
如何在 javascript 中合并两个数组而不出现重复的情况
发布时间:2024/03/23 浏览次数:86 分类:javascript
-
本教程介绍了如何在 javascript 中合并两个数组,以及如何删除任何重复的数组。