2009-01-16 2 views
4

В NetBeans GUI Builder генерирует код, который не соответствует вашим требованиям из редактора.Обход блокировки сгенерированного кода в NetBeans 6.5?

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

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

Спасибо.

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

+0

Из ответов, кажется, я неправильно понял, как это работает. Я думал, что неприкосновенный код - это информация о конфигурации. Я не знал, что он действительно создается из другого файла. –

ответ

4

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

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

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

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

4

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

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

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

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

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


EDIT: «Примечание: я не хочу потерять генерацию кода». Хорошо, посмотрим здесь.

  1. Вы хотите изменить, что генерируется.
  2. Вы не хотите потерять генерацию кода.
  3. Вы не хотите использовать средства, которые NetBeans предоставляет для добавления пользовательского кода.

Звучит так, будто вы жаждете себя. : D

+0

Я это знаю. :) Смотрел что-то, что не требовало, чтобы я сдул существующий материал для генерации кода. –

+0

Возможно. Даже функция «Открыть как текст». –

+0

Но даже если вы открыли его как текст, ваши изменения будут уничтожены при следующем изменении формы. –

0

Можете ли вы подклассифицировать класс и переопределить метод, в котором этот код? Конечно, вам придется поддерживать этот метод с течением времени, когда вы вносите изменения в графический интерфейс.

Возможно, вы также можете заглянуть в AspectJ. Он будет изменять байтовый код во время сборки и вносить изменения, которые вы определяете. Не уверен, что это дает вам достаточно контроля над тем, какой код нужно изменить.

+0

Не хотите изменять код, просто поведение IDE.Потому что я могу заставить его работать так, как есть, но это раздражает. –

+0

Вы можете написать плагины для Netbeans. Для этого я видел несколько уроков. Не уверен, что можно изменить это поведение или как это было бы тяжело. –

0

Если вы используете APT, вы можете переписать исходный код во время компиляции. Таким образом, вы можете перезаписать код, который есть на данный момент. Вы можете сохранить новый код в одном файле Java вместе с комментариями, чтобы объяснить, что происходит. This tutorial позволяет легко начать работу. Скопируйте этот код, заставьте его работать, а затем настройте его по своему вкусу. Чтобы узнать, где в коде аннотированный метод - вызов getPosition() в Декларации.

2

У меня была такая же проблема. Я расширил JPanel своим классом панели, и я не смог упаковать его с остальной частью пользовательского интерфейса. Сначала я искал в Интернете, и я нашел ваш вопрос. Я не смог найти элегантное решение этой проблемы. Поэтому я решил создать еще один класс java и скопировать в него код NetBeans. Оно работало завораживающе. Согласен, было бы неплохо, если бы мы могли модифицировать существующий код, как в .NET.

0

Перейти на страницу дизайна и выбрать любое из полей. Щелкните правой кнопкой мыши на любом выбранном поле и выберите «Код настраивателя», «Код пользовательского кода» измените весь код по умолчанию на пользовательское создание. Теперь вы можете отредактировать свой код проекта, как вам нравится ...

1

Я копирую метод initcomponents(), создаю свой собственный метод newInitComponents() вставляют сгенерированный код и переопределяют то, что нужно переопределить, прежде чем распространять код. Таким образом, когда изменения внесены в редактор, вы все равно можете скопировать код в свой новый метод. Вы сохраняете функциональность, не затрачивая на вас возможности переопределять там, где это необходимо. Просто вызовите newInitComponents() в вашем конструкторе, а не в оригинале. Это не самый эффективный способ делать что-то, но он делает то, что вы хотите.

0

Очень простой ... дрянной UTF-8 не позволяет мне скомпилировать один JasperReport (все сделано с помощью GUI). Итак, мне нужно было сменить проект на iso-8859-1. Результат? Проект запутан, и некоторые из вещей, которые нужно исправить, находятся в заблокированных частях кода. Поэтому мне действительно нужно отредактировать эти автоматически созданные части. Когда они будут восстановлены, они будут в порядке, потому что проект теперь iso-8859-1.

1

Вы также можете попробовать переместить файл .form в

(название проекта) \ SRC \ (имя JFrame/JPanel) .FORM

NetBeans теперь рассматривают его как .java файл.
Если вы не отредактировали что-либо нужное для редактора GUI, вы можете переместить файл .form обратно в папку src.

0

Шаг # 1 Закрыть проект в NetBeans

Шаг # 2 Удалите файл .FORM из исходного каталога вашего проекта

Переооткрытие проект и теперь будут доступны для редактирования!

Смежные вопросы