2016-03-24 3 views
1

Ich habe ein Programm entwickelt, in dem ich eine Schleife in Java wie folgt ausführen.Aufrufen eines anderen Java-GUI-Programms in einer Schleife unter einer bestimmten Bedingung

int i; 
for (i=0; i<10; i++) 
{ 
    if(i==2) 
    { 
     call A GUI of another program (written in JAVA) 
     sleep(20000); // make it sleep for 20 sec. 
    } 

    // calling a MATLAB file, which itself passing some parameters to a software PowerWorld 
} 

Das Problem, dass das Programm nur das GUI-Programm aufruft, nachdem alle seine 10-Instanzen nach, nicht, wenn i = 2. Ich möchte einige andere Aktionen ausführen, die im Java-GUI-Programm verfügbar sind. Ich habe versucht, mit einem separaten Thread (Java Multithreading), wenn i = 2.

if (i==2) 
{ 
    MyRunnable myRunnable = new MyRunnable(10); 
    Thread t = new Thread(myRunnable); 
    t.start();     
    try { 
     Thread.sleep(20000); 
    } 
    catch (InterruptedException ie) { }  
} 

und eine neue MyRunnable Klasse:

public class MyRunnable implements Runnable { 
    private int var; 
    public MyRunnable(int var) { 
     this.var = var; 
    } 

    public void run() { 
     String[] args = {}; 
     guiprog2.main(args); //A GUI of Program2 that needs to be invoked 
    } 
} 

ich es schätzen würde, wenn mir jemand helfen könnte, das Problem zu beheben.

Antwort

0

Auf welchem ​​Thread laufen Sie die Schleife? Das andere GUI-Programm läuft im selben Prozess wie der aufrufende Prozess. Angenommen, beide Rendern werden im selben Thread ausgeführt, kann das zweite Programm nicht gerendert werden, wenn die Schleife im Rendering-Thread ausgeführt wird. Warum führen Sie guiprog2 nicht in einem separaten Prozess aus?

Verwandte Themen