java 异常 exception in thread awt-ag捕鱼王app官网

java 异常 exception in thread awt-eventqueue-0 java.lang.nullpointerexception

作者:迹忆客 最近更新:2023/07/16 浏览次数:

当我们使用 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。

  1. 当访问和修改空对象字段时。
  2. 当我们从空对象调用方法时。
  3. 当访问和修改空对象的槽时。
  4. 获取任何空数组的长度时。
  5. 当我们尝试同步空对象时。
  6. 当我们抛出空值时。

让我们尝试一个在 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 post

发布时间:2024/03/23 浏览次数:96 分类:javascript

本教程讲解如何在不使用 javascript 表单的情况下发送 post 数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图