Обойти блокировку сгенерированного кода в NetBeans 6.5?
В NetBeans GUI Builder генерирует код, который вам недоступен из редактора.
Я знаю, что вы можете переключиться в режим "Дизайн" и указать собственный код, а затем косвенно ввести "редактировать" таким образом, но боль в том, что вы не можете редактировать текст в 2 строках от вашего курсора.
Могу ли я разрешить редактирование в этих регионах... Обещаю, я буду осторожен:)
Благодарю.
Примечание: я не хочу терять генерацию кода
10 ответов
Если вы откроете его во внешнем редакторе, есть две возможности:
- нет никаких гарантий, что внесенные вами изменения будут работать (и ничего не нарушать) в редакторе пользовательского интерфейса Netbeans
- При следующем редактировании файла в Netbeans он будет восстановлен.
В любом случае, вероятно, не то, что вы хотите. Лучше всего, вероятно, сделать весь дизайн в графическом редакторе, а когда вы довольны им, удалите комментарии и продолжайте.
[сарказм] С помощью графического редактора с перетаскиванием, что вы можете изменить вручную? [/ сарказм];)
Если вы откроете файлы.java в Блокноте или WordPad, вы найдете пары комментариев, которые говорят
// GEN-BEGIN: <name of section>
...
// GEN-END: <name of section>
Удалите эти комментарии, и произойдут две вещи.
- Вы сможете редактировать в любом месте файла в NetBeans.
- NetBeans не сможет восстановить файл из редактора графического интерфейса.
Так что это может быть сделано, но не делайте этого, если вы действительно не имеете это в виду.
РЕДАКТИРОВАТЬ: "Примечание: я не хочу терять генерацию кода". Хорошо, давайте посмотрим здесь.
- Вы хотите изменить то, что генерируется.
- Вы не хотите терять генерацию кода.
- Вы не хотите использовать средства, которые NetBeans предоставляет для добавления пользовательского кода.
Звучит так, будто ты желаешь себе неприятностей.:D
У меня была такая же проблема. Я расширил JPanel своим собственным классом панели, и я не смог упаковать его с остальным пользовательским интерфейсом. Сначала я искал в Интернете, и я нашел ваш вопрос. Я не смог найти элегантного решения этой проблемы. Поэтому я решил создать еще один класс Java и скопировать в него созданный NetBeans код. Оно работало завораживающе. Я согласен, было бы неплохо, если бы мы могли изменить существующий код, как в.NET.
Я копирую метод initcomponents(), создаю свой собственный метод newInitComponents(), вставляю сгенерированный код и переопределяю то, что необходимо переопределить, прежде чем распространять код. Таким образом, когда в редакторе вносятся изменения, вы все равно можете скопировать и вставить код в новый метод. Вы сохраняете функциональность, не затрачивая на это возможность переопределять при необходимости. Просто вызовите newInitComponents() в вашем конструкторе, а не в оригинале. Это не самый эффективный способ делать вещи, но он делает то, что вы хотите.
Вы также можете попробовать переместить .form
файл в
(имя проекта)\src\(имя JFrame / JPanel).form
NetBeans теперь увидит это как .java
файл.
Если вы не редактировали ничего необходимого для графического редактора, вы можете переместить .form
файл обратно в src
папка.
Можете ли вы создать подкласс класса и переопределить метод, в котором находится этот код? Конечно, вам придется поддерживать метод с течением времени по мере внесения изменений в графический интерфейс.
Вы можете также посмотреть на AspectJ. Он изменит байт-код во время сборки и внесет изменения, которые вы определили. Не уверен, что это дает вам достаточный контроль над тем, какой код изменить.
Перейдите на страницу дизайна и выберите любое из полей. Щелкните правой кнопкой мыши на любом выбранном поле и выберите "Код настройки". В "Коде настройки" измените весь код по умолчанию на создание пользовательских. Теперь вы можете редактировать свой дизайн кода, как вам нравится...
Шаг № 1 Закройте проект в NetBeans
Шаг № 2 Удалите файл.form из исходного каталога вашего проекта.
Повторно откройте проект, и он будет редактироваться сейчас!
Очень просто... дерьмовый UTF-8 не позволил мне скомпилировать один JasperReport (все сделано с помощью GUI). Итак, мне нужно было изменить Project на ISO-8859-1. Результат? Проект испорчен, и некоторые вещи, которые нужно исправить, находятся в заблокированных частях кода. Итак, мне действительно нужно редактировать эти автоматически сгенерированные части. Когда они будут восстановлены, они будут в порядке, потому что проект теперь iso-8859-1.
Если вы используете APT, вы можете переписать исходный код во время компиляции. Таким образом, вы можете переписать код, который есть на данный момент. Вы можете сохранить новый код в том же файле Java вместе с комментариями, чтобы объяснить, что происходит. Этот учебник позволяет довольно легко начать работу. Скопируйте этот код, включите его, а затем настройте по своему вкусу. Чтобы выяснить, где в коде аннотированный метод вызывается getPosition() в объявлении.