0

animatorRunnable を実装する次のクラスを取得しました( JUNG のドキュメントに記載されています)。

threadある条件がpauseしばらくの間真であり、その後start実行されているかどうかを にどのように伝えることができますか?

    switch (args[0]) 
    {
        case "agent":
            int size=nodeAttributes.size();
            int i;
            for(i=0;i<size;i++)
            {
                if(args[1].equals(nodeAttributes.get(i).nodeName))
                {
                    VertexCollider vtxCol = new VertexCollider(layout, panel,args[1], args[2] , args[1] , nodeAttributes.get(i));
                    vtxCol.setMaximumIterations(1000);
                    vtxCol.setDesiredPrecision(1);
                    vtxCol.initialize();
                    Animator  animator = new Animator(vtxCol);

                    animator.start();
                    if(nodeAttributes.get(i).isMoving)
                    {
                        animator.stop();
                        animator.wait(10000);
                        System.out.println("stopped");
                    }
                    nodeAttributes.get(i).isMoving = true;
                    break;  
                }
            }
            break;
    }
4

3 に答える 3

1

参照したドキュメントによると、Animator繰り返しループの間に一定時間一時停止できます。

animator.setSleepTime(10000);

そして、一時停止状態が終了したときのスリープ時間をはるかに短い間隔に設定できます。

ただし、一時停止条件が真の場合、アニメーターを完全に停止させたいようです。その場合、stop()その時点でアニメーターをお勧めします(コードが行っているように)start()。一時停止状態が終了したら、もう一度アニメーターをお勧めします。stop メソッドと start メソッドを繰り返し呼び出すことができるようです。

于 2015-01-18T05:14:48.157 に答える
0

プログラムをスリープさせたい場所に配置します: (if ステートメント内?)

try {
    Thread.sleep(1);
} catch (InterruptedException e) {
    e.printStackTrace();
}

これにより、必要なミリ秒だけスリープするようにスレッドに指示されます。

do-while:

do{

    try {
        Thread.sleep(1);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

}while(something() == true);

これは、false になるまで値をチェックし続けます。

于 2015-01-18T05:05:42.100 に答える