Как отладить код для сброса функциональности в приложении Java GUI? - PullRequest
2 голосов
/ 27 декабря 2010

Я пишу некоторый код симуляции, и мне удалось запустить мою модель, как ожидалось.Однако, когда я перезагружаю модель (она находится поверх большого количества кода, написанного другими, к которому у меня сейчас нет доступа) и хочу перезапустить ее, у меня возникают проблемы.

Из того, что ясобраны из чтения сообщений на сайте, и ошибки, которые я получаю, возникают проблемы из-за исключений нулевого указателя и ошибок Awt-queue из-за некоторых графических элементов, которые сталкиваются с проблемами после сброса (из-за тех элементов, к которым они относятся, больше не действительны).

0 - Что обычно происходит при нажатии кнопки сброса в коде симуляции?Я думаю (надеюсь), что все остальные сделали свою домашнюю работу правильно, и так как я не знаю об этом, мне нужно сделать некоторую собственную уборку, чтобы все было хорошо.

1-Теперь, какой самый простой способ исправить проблемы такого рода, которые возникают только после повторного запуска кода?

2-Каковы общие рекомендации по очистке кода после каждого запускасимуляция?

Ответы [ 2 ]

0 голосов
/ 22 января 2011

Я не знаю ответа на вопросы 0 и 2, так что любой вклад приветствуется.

Я только что понял, в чем проблема.Графический интерфейс не обновлялся должным образом, поэтому он ссылался на «очищенные» элементы, которые после первого запуска больше не существовали, и, таким образом, возникали всевозможные странные ошибки ...

0 голосов
/ 27 декабря 2010

Ах, хорошо. Я не могу сказать вам, где именно проблема, но у меня есть смутное воспоминание о том, чтобы исправить такую ​​ошибку раньше. Я думаю, что это как-то связано с представлением графического компонента о «пустом» значении. А именно, он не поддерживает null в качестве значения.

Начните с изучения трассировки стека исключения и читайте его, пока не увидите некоторые из ваших классов (т.е. первые, которые не являются AWT, Swing или любым другим базовым классом). Затем взгляните на номера строк, записанные в трассировке стека в этих конкретных классах.

Если неясно, что вызвало исключение в этой строке сразу, просто взглянув на код (чаще, чем можно было бы ожидать), затем попробуйте установить точку останова за несколько строк до и выполнить шаги в отладчик. Надеюсь, тогда будет понятно, что пошло не так.

Ну вот как я отлаживаю ошибки, подобные этой. Надеюсь, это поможет.

...