2016-09-04 8 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

実行時にパラメータ化されたコンストラクタを使用して作成しようとするオブジェクトでこのエラーが発生します。単純なコンストラクタ(単に "()")でオブジェクトを作成し、すべてのパラメータを個別に設定すると、その問題は発生しません。単純なコンストラクタを使用して作成した場合は、そのオブジェクトのすべてのパラメータを設定した後で、そのオブジェクトの.initiliaze()を呼び出す必要があるオブジェクトがあるため、Anylogic APIで、使用しているオブジェクトに関する具体的な情報を確認してください。 objはあなたが動的に作成されたオブジェクトの名前に置き換えられ

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

:あなたは、実行時に画面にオブジェクトを追加したい場合はさらに、あなたはそれを作成する関数にこのコードを追加する必要があります。

関連する問題