2016-09-04 14 views
1

런타임에 객체를 동적으로 생성하거나 수정할 수 있습니까? 예를 들어, 버튼 클릭, 다른 버튼 생성 또는 도로 수 변경 등? 내가 런타임에 버튼 액션이 코드를 작성할 때 AnyLogic - 시뮬레이션 시간에 객체를 동적으로 생성합니다.

road123.setBackwardLanesCount(3); 

내가 얻을 오류 아래 :

루트 : road123 : 마크 업 요소가 이미 시작되고 modified.Please 수 없습니다 사용 생성자를 인자없이 호출하고, 셋업을 수행하고, 마지막으로 initialize()를 호출하십시오. 함수

+0

코드에 대한 정보를 좀 더 제공 할 수 있습니까? obj 클래스가 road123입니까? 어떻게하면 단추/선을 추가/제거하려고합니까 –

+0

road123은 Road 객체입니다. –

+0

코드에서 객체를 만들고 GUI에 동적으로 추가하기가 어렵습니다. 당신은 anylogic 런타임 엔진에 그것을 추가해야합니다. 가장 쉬운 방법은 필요한 객체를 만든 다음 필요없는 객체를 숨기려면 button.setvisible (false)를 사용하는 것입니다. 그러나 그게 아니라면 옵션. 가장 좋은 조언은 botton을 생성 한 다음 main에 대한 anylogic 코드를보고 그것이 어떻게 생성되고 추가되는지 살펴 보는 것입니다. –

답변

0

매개 변수화 된 생성자를 사용하여 런타임에 생성하려고 시도하는 객체에서이 오류가 발생합니다. 간단한 생성자 (그냥 "()")로 개체를 만든 다음 모든 매개 변수를 개별적으로 설정하면 해당 문제가 발생하지 않습니다. Anylogic API에서 사용중인 개체에 대한 구체적인 정보를 확인하십시오. 일부 개체는 간단한 생성자를 사용하여 매개 변수를 만든 경우 해당 개체의 .initiliaze()를 호출해야합니다. 실행시 화면에 개체를 추가하려는 경우 또한, 당신은 그것을 생성 함수에이 코드를 추가해야합니다 :

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

을 OBJ가 동적으로 생성 된 오브젝트의 이름으로 대체됩니다.