2016-09-04 15 views
1

Возможно ли динамическое создание объектов или их изменение во время выполнения? Например, при нажатии кнопки другая кнопка создала или изменила количество линий дороги? Когда я пишу этот код для кнопки действий, в время выполненияAnyLogic - динамически создавать объекты во время моделирования

road123.setBackwardLanesCount(3); 

Я получаю ошибку ниже:

корня: road123: элемент разметки уже инициированного и не может быть modified.Please использования конструктор без аргументов, выполнить настройку и, наконец, вызвать initialize() .function

+0

Вы могли бы предоставить немного больше информации о своем коде? какой класс obj является дорогой123? как вы пытаетесь добавить/удалить кнопку/линии? –

+0

road123 является дорожным объектом. –

+0

хорошо создать объект в коде, а затем добавить динамически в GUI. Вы должны добавить его в любой логический механизм выполнения. Самый простой способ - создать нужные вам объекты, а затем скрыть те, которые вам не нужны, с помощью кнопки button.setvisible (false). Если, однако, это не так и вариант. Мой лучший совет - создать botton, а затем посмотреть в любом логическом коде для основного, чтобы увидеть, как он создается и добавляется. –

ответ

0

Вы получите эту ошибку с любым объектом, который вы пытаетесь создать во время выполнения, используя параметризованный конструктор. Если вы создадите объект с помощью простого конструктора (просто «()»), а затем установите все параметры отдельно, вы не столкнетесь с этой проблемой. Проверьте API-интерфейс Anylogic на конкретную информацию об объекте, который вы используете, потому что некоторые требуют, чтобы вы вызывали .initiliaze() на этом объекте после установки всех его параметров, если вы создали его с помощью простого конструктора. Кроме того, если вы хотите, чтобы добавить объект к экрану во время выполнения вам необходимо добавить этот код в функцию, которая создает его:

@Override 
public void onDraw(Panel panel, Graphics2D graphics) { 
    obj.drawModel(panel, graphics, true); 
} 

где OBJ заменяется на имя объекта, созданного динамически.