Я использую java3D и хочу передать идентификатор выбранных элементов в мой класс. однако это не удается. он может распечатать идентификатор, а также передать его в текстовый текст. но он говорит nullPointerException в строке game.btClicked (текст); как я могу передать ID моему классу?как передать параметр с mouseClicked?
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 {
}
}
}
общественного класса Game {
public Game(){
// .......
}
public void btClicked(String text) {
spielfeld.disableAll();
int buttonNr = Integer.parseInt(text);
System.out.println("step: "+step+ " nr: "+buttonNr);
// .......
}}
следующего является трассировка стека:
щелкнул: 38
Исключение в потоке "АВТ-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.java:552" ссылается на "game.btClicked (текст);"
«Game.java:403» ссылаются на «spielfeld.disableAll();» но я уверен, что эта линия в порядке.
Добро пожаловать в StackOverflow! Нам понадобится полная трассировка стека вашей ошибки и, конечно, код 'Game :: btClicked', чтобы помочь вам :) – NiziL