Netbeans восстанавливает неработающий код в TopComponent. Как это исправить?
Я занимался этим более недели, и теперь это начинает мешать моей продуктивности.
У меня есть JTextBox, к которому я применяю пользовательский фильтр документов. Чтобы добавить это, я щелкнул правой кнопкой мыши по элементу управления, зашел в Customize Code и добавил эту строку под всем:
((javax.swing.text.AbstractDocument)jtfTextField.getDocument()).setDocumentFilter(new mylibrary.NumericDocumentFilter());
Теперь, это была работа копирования-вставки (как я использовал это в других местах). Поле, на которое я хотел установить фильтр, называется TextField
, По ошибке я нажал OK, скомпилировал, и он взорвался. Дух, я вижу свою ошибку. Я исправляю это, перекомпилирую, и все еще получаю ошибку. Теперь мой код имеет это:
((javax.swing.text.AbstractDocument)TextField.getDocument()).setDocumentFilter(new mylibrary.NumericDocumentFilter());
((javax.swing.text.AbstractDocument)jtfTextField.getDocument()).setDocumentFilter(new mylibrary.NumericDocumentFilter());
И когда я захожу в Customize Code, он просто показывает правильный (верхний). Я закрываю Netbeans, редактирую файл с помощью Notepad++, удаляю строку, вызывающую сбой, и запускаю резервное копирование Netbeans. Теперь он компилируется, я запускаю его, тестирую, затем, когда я возвращаюсь, код восстанавливается с ошибочной строкой.
Я взорвал кэш для Netbeans, и он ничего не сделал, так что я действительно не знаю, как это исправить. Любой берущий?
Netbeans версия 7.3.1.
Обновление: я немного покопался и нашел это в файле *.form моего Topcomponent:
<AuxValues>
<AuxValue name="JavaCodeGenerator_AddingCodePost" type="java.lang.String" value="((javax.swing.text.AbstractDocument)jtfTextField.getDocument()).setDocumentFilter(new mylibrary.NumericDocumentFilter());"/>
</AuxValues>
Возможно, удаление этого могло бы решить проблему, но я не уверен, и действительно не хочу рисковать разрушением этого проекта.
1 ответ
- Попробуйте очистить и перестроить ваш проект (по умолчанию Shift + F11). Если это не восстановит форму, и ошибка все еще сохраняется:
- Редактировать форму: заменить код в
value
свойство тега выше по вашему коду.
Что касается самой ошибки, вы должны поместить только сгенерированный код в сгенерированный раздел. Вы всегда можете сделать пост-инициацию после initComponents()
метод в конструкторе. Это позволяет избежать возможных ошибок в GUI Editor и облегчает контроль кода для вас.