スレッド AWT-EventQueue-0 の例外 java.lang.NullPointerException
"AWT-EventQueue-0" java.lang.NullPointerException
例外は、Java AWT パッケージ メソッドを操作するときに発生し、null
値が任意のメソッドに渡されます。 このチュートリアルでは、Java でこの NullPointerException
を解決する方法を示します。
Java でのスレッド "AWT-EventQueue-0" java.lang.NullPointerException での例外
"AWT-EventQueue-0" java.lang.NullPointerException
は、AWT パッケージに null 値を渡すと発生します。 NullPointerException
例外は、Java で最も一般的な例外です。
NullPointerException
は、次のいずれかの条件が満たされた場合に発生します。
null
オブジェクト フィールドにアクセスして変更する場合。null
オブジェクトからメソッドを呼び出すとき。null
オブジェクトのスロットにアクセスして変更する場合。null
配列の長さを取得する場合。null
オブジェクトを同期しようとしたとき。null
値をスローする場合。
Java で "AWT-EventQueue-0" java.lang.NullPointerException
をスローする例を試してみましょう。
package delftstack;
import java.awt.*;
import java.awt.event.*;
import java.util.Timer;
import javax.swing.*;
@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 メソッド new ImageIcon(getClass().getResource())
が null
エントリを取得しているため、"AWT-EventQueue-0" java.lang.NullPointerException
がスローされます。
このコードの出力は次のとおりです。
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.<init>(ImageIcon.java:234)
at delftstack.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 のパスに \\
を使用するため、/
を削除することもできます。
それでもうまくいかない場合は、画像へのフル パスを指定できます。 上記のコードでは、詳細な説明がコメントアウトされています。
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook