gpt4 book ai didi

java - 这是什么 java.awt.event 错误?

转载 作者:行者123 更新时间:2023-11-29 06:48:11 25 4
gpt4 key购买 nike

回答:

如果您曾经看到这些行并且像我一样被弄糊涂了,那么这就是它们的意思。

Thread[AWT-EventQueue-0](暂停(异常 NullPointerException))

EventDispatchTread.run() 行:不可用 [局部变量不可用]

这并不是说变量不可用,因为它们隐藏在某个潮湿的图书馆中的神秘面纱后面。不不,他们只是超出了范围!这仍然是你的错,你仍然必须找到 null,不,你不能责怪图书馆。重要的一课!

问题:

作为初学者,对我来说最令人沮丧的事情之一就是图书馆!这是一种爱恨交织的关系:一方面,他们让我做一些我通常不会理解如何使用我理解的代码的事情,另一方面,因为我不完全理解他们,他们有时会抛出一个 Spanner 在其他方面工作正常的代码!这是因为我不明白使用这些库时可能发生的错误,因为我没有编写它们,并且因为当其中一个导入开始出现问题时,eclipse 并没有给我很多帮助...

这就是问题所在:我一直在使用 java.awt.event 处理屏幕上的一堆 JButton。当我使用我制作的其中一个按钮时出现错误。错误是:

Thread[AWT-EventQueue-0](暂停(异常 NullPointerException))

EventDispatchTread.run() 行:不可用 [局部变量不可用]

这是什么意思?是什么原因造成的?我不好意思发布代码,但如果你能忍受尝试破译我糟糕的风格,这里是似乎导致抛出此错误的方法。

public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
String name;

code...

if(cmd.equals("Play")) {
name = field.getText();
card = getCard(name);

if(card != null) {
if(rules.zoneHasCard(card, rules.hand)) {
display.updateStatusMessage(rules.play(card));
field.setText("");
display.updateHand(rules.zoneList("hand"));
display.updateDiscard(rules.zoneList("Discard")); // This is the error here! The discard Zone was empty!
}
else {
field.setText("You do not have " + card.getName());
field.selectAll();
}
}
else {
field.setText("That cardname is unused");
field.selectAll();
}
}
}

最佳答案

欢迎编写 GUI 代码的复杂性。

当您运行 Swing 程序时,会创建一个称为事件调度线程的后台线程。例如,当用户单击 JButton 时,JButton 使用此事件调度线程创建并触发事件。因此得名:它是调度事件的线程!

您的代码:

public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
String name;

// more code...
}

由此事件调度线程调用,因此您的代码可以处理该事件。

在您的代码中的某处,您正试图对当前等于 null 的变量执行某些操作。错误消息告诉您,“嘿,在事件分派(dispatch)线程上运行一些代码时,我遇到了 NullPointerException”在您的代码中

为什么您没有收到更多信息?可能您将 Eclipse 配置为在编译时不包含调试信息?

现在,我建议在您的 actionPerformed 方法中添加一些行来显示变量的状态:

System.out.println("field = " + field);
System.out.println("rules = " + rules);
System.out.println("display = " + display);

看看这是否显示任何空值。

即使 NullPointerException 来自库,堆栈跟踪也会显示代码的哪一行调用了该库。但前提是您已将 Eclipse 配置为生成调试信息。

从长远来看,通过 Sun 的 Swing 教程来了解有关这些问题的更多信息。

关于java - 这是什么 java.awt.event 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/343435/

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