作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 java3D 并希望将单击的项目的 ID 传递给我的类。但它没有成功。它可以打印 ID,也可以将其传递给字符串文本。但它在 game.btClicked(text); 行中显示 nullPointerException;我如何将 ID 传递给我的类(class)?
public class GUI extends JFrame implements ActionListener, MouseListener {
private Game game;
private String text;
public GUI(Game game /*...*/) {
this.game = game;
//.......
}
//.......
public void mouseClicked(MouseEvent e) {
pickCanvas.setShapeLocation(e);
Primitive pickedShape = null;
PickResult result = pickCanvas.pickClosest();
if (result != null) {
pickedShape = (Primitive) result.getNode(PickResult.PRIMITIVE);
}
//actions to be carried out when object is clicked
if (pickedShape != null) {
System.out.println("clicked: " + pickedShape.getName());
String text = pickedShape.getName();
System.out.println(text);
game.btClicked(text);
} else {
}
}
}
公开课游戏{
public Game(){
//......
}
public void btClicked(String text) {
spielfeld.disableAll();
int buttonNr = Integer.parseInt(text);
System.out.println("step: "+step+ " nr: "+buttonNr);
// .......
}}
以下是堆栈跟踪:
点击次数:38
38
线程“AWT-EventQueue-0”java.lang.NullPointerException 中出现异常
at spiel.Game.btClicked(Game.java:403)
at spiel.SpielGUI.mouseClicked(GUI.java:552)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
这是相当多的,但大多数是由于其他问题,我正在为游戏编写一个新的 GUI,所以仍然有一些代码需要更改。所以只看第一行。
“GUI.java:552”指的是“game.btClicked(text);”
“Game.java:403”指的是“spielfeld.disableAll();”但我确信这条线没问题。
最佳答案
您提供的代码中没有构造函数。您有一个看起来非常像构造函数的方法。我假设游戏没有初始化。
构造函数不定义返回类型。就你而言,你有
public void GUI(Game game ....)
当你真正需要的时候
public GUI(Game game ....)
这是一个例子:
public class GUI {
boolean b = false;
public static void main(String[] args) {
GUI g = new GUI();
System.out.println(g.b);
}
public void GUI() {
b = true;
}
}
提供输出:
run:
false
BUILD SUCCESSFUL (total time: 2 seconds)
正确的构造函数是:
public class GUI {
boolean b = false;
public static void main(String[] args) {
GUI g = new GUI();
System.out.println(g.b);
}
public GUI() {
b = true;
}
}
这给出:
run:
true
BUILD SUCCESSFUL (total time: 1 second)
关于java - 如何从 mouseClicked 传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33300884/
我是一名优秀的程序员,十分优秀!