ОТВЕТ:
Если вы когда-нибудь увидите эти строки и ошибаетесь, как я, вот что они значат.
Thread[AWT-EventQueue-0] (Suspended (exception NullPointerException))
EventDispatchTread.run() line: not available [local variables unavailable]
Дело не в том, что переменные недоступны, потому что они скрываются за покровом тайны в библиотеке, где-то сырой. Нет-нет, они просто вышли за рамки! Это по-прежнему ваша вина, вы все равно должны найти ноль, и нет, вы не можете винить библиотеку. Важный урок!
ВОПРОС:
Одна из самых неприятных вещей для меня, как для начинающего, это библиотеки! Это отношения любовь / ненависть: с одной стороны, они позволяют мне делать вещи, которые я обычно не понимаю, как делать с кодом, который я понимаю, с другой стороны, потому что я не совсем понимаю их, они иногда бросают ключ в коде, который в противном случае работает нормально! Это потому, что я не понимаю ошибок, которые могут возникать при использовании этих библиотек, потому что я их не написал, и потому что eclipse не дает мне много работы, когда один из импортеров начинает работать ...
Так вот в чем проблема: я работал с java.awt.event, чтобы обрабатывать кучу JButton на экране для этого и того. Я получаю ошибку, когда использую одну из сделанных мной кнопок. Ошибка:
Thread[AWT-EventQueue-0] (Suspended (exception NullPointerException))
EventDispatchTread.run() line: not available [local variables unavailable]
Что это значит? Что может быть причиной? Мне стыдно писать код, но если вы можете попытаться расшифровать мой ужасный стиль, вот метод, который, кажется, вызывает эту ошибку.
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();
}
}
}