Обойти блокировку сгенерированного кода в NetBeans 6.5?

В NetBeans GUI Builder генерирует код, который вам недоступен из редактора.

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

Могу ли я разрешить редактирование в этих регионах... Обещаю, я буду осторожен:)

Благодарю.

Примечание: я не хочу терять генерацию кода

10 ответов

Решение

Если вы откроете его во внешнем редакторе, есть две возможности:

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

В любом случае, вероятно, не то, что вы хотите. Лучше всего, вероятно, сделать весь дизайн в графическом редакторе, а когда вы довольны им, удалите комментарии и продолжайте.

[сарказм] С помощью графического редактора с перетаскиванием, что вы можете изменить вручную? [/ сарказм];)

Если вы откроете файлы.java в Блокноте или WordPad, вы найдете пары комментариев, которые говорят

// GEN-BEGIN: <name of section>
...
// GEN-END: <name of section>

Удалите эти комментарии, и произойдут две вещи.

  1. Вы сможете редактировать в любом месте файла в NetBeans.
  2. NetBeans не сможет восстановить файл из редактора графического интерфейса.

Так что это может быть сделано, но не делайте этого, если вы действительно не имеете это в виду.


РЕДАКТИРОВАТЬ: "Примечание: я не хочу терять генерацию кода". Хорошо, давайте посмотрим здесь.

  1. Вы хотите изменить то, что генерируется.
  2. Вы не хотите терять генерацию кода.
  3. Вы не хотите использовать средства, которые 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() в объявлении.

Другие вопросы по тегам