如何将控制权从java swing框架返回到普通java代码

如何将控制权从java swing框架返回到普通java代码,java,swing,Java,Swing,我正在开发一个java应用程序,使用Swigs开发GUI屏幕。我应该运行一些应用程序文件。我使用Runtime.exec()方法连接到命令提示符。如果我的应用程序无法正确执行,那么会出现一个GUI框架,要求weather再次运行该文件或跳过该文件 这里我的问题是,当我说再次运行该文件时,控件应该返回到使用ui.setvisible(true)调用帧的位置 如果不是swing框架,我可以使用什么使代码工作 public static boolean runFormat(String format,

我正在开发一个java应用程序,使用Swigs开发GUI屏幕。我应该运行一些应用程序文件。我使用Runtime.exec()方法连接到命令提示符。如果我的应用程序无法正确执行,那么会出现一个GUI框架,要求weather再次运行该文件或跳过该文件

这里我的问题是,当我说再次运行该文件时,控件应该返回到使用ui.setvisible(true)调用帧的位置


如果不是swing框架,我可以使用什么使代码工作

public static boolean runFormat(String format,String buildNumber) throws Exception
{
try{
        ProcessExecutor process = new ProcessExecutor();
         process.executeCommand(format+"\\Scripts"+File.separator+"Step1.bat"+""+"02_00"+" "+format);
        process.waitForCompletion();
        File file = new File(format+File.separator+"Results1.log");
        BufferedReader read = new BufferedReader (new FileReader(file));
        String line;
        while((line=read.readLine())!=null)
        {
            if(line.contains("Successful exit."))
    {
                return true;
    }
        }
        return false;
}
catch(Exception e)
    {
        System.out.println("EXCEPTION OCCURED..................");
        System.out.println("JTag has failed for "+format);
        e.printStackTrace();
}
    return true;
}
    void run(Set<String> formats)
    {
        try
        {
        for(String ar : formats)
        {
            boolean b =runFormat(ar,"001");
            if(b==false)
            {
                ExampleUi ui = new ExampleUi();
                ui.setVisible(true);
            }
        }
        }
        catch(Exception e)
        {

        }
    }
publicstaticboolearnrunformat(stringformat,stringbuildnumber)引发异常
{
试一试{
ProcessExecutor进程=新的ProcessExecutor();
process.executeCommand(格式+“\\Scripts”+文件.separator+“Step1.bat”+“”+“02_00”+“”+格式);
process.waitForCompletion();
File File=新文件(格式+File.separator+“Results1.log”);
BufferedReader read=新的BufferedReader(新文件读取器(文件));
弦线;
而((line=read.readLine())!=null)
{
if(第.contains行(“成功退出”))
{
返回true;
}
}
返回false;
}
捕获(例外e)
{
System.out.println(“发生异常”);
System.out.println(“JTag对“+格式”失败);
e、 printStackTrace();
}
返回true;
}
无效运行(设置格式)
{
尝试
{
for(字符串ar:格式)
{
布尔b=运行格式(ar,“001”);
如果(b==false)
{
ExampleUi=新的ExampleUi();
ui.setVisible(true);
}
}
}
捕获(例外e)
{
}
}

提前谢谢

简短的回答是否定的

答案很长,需要使用
SwingWorker
并决定在其
done
方法中做什么

查看更多详细信息

public class ProcessWorker extends SwingWorker<Boolean, Void> {
    public Boolean doInBackground() throws Exception {
        ProcessBuilder pb = new ProcessBuilder(...);
        Process p = pb.start();
        // Read the input stream in separate thread...
        return p.waitFor() == 0;
    }

    public void done() {
        try {
            boolean okay = get();
            if (!okay) {
                // Re-run....?
            }
        } catch (Exception exp) {
            // Show error message, maybe in a JOptionPane
        }
    }
}
公共类ProcessWorker扩展SwingWorker{
公共布尔doInBackground()引发异常{
ProcessBuilder pb=新的ProcessBuilder(…);
进程p=pb.start();
//在单独的线程中读取输入流。。。
返回p.waitFor()==0;
}
公众假期结束(){
试一试{
布尔OK=get();
如果(!好的){
//重新运行。。。。?
}
}捕获(异常扩展){
//显示错误消息,可能在JOptionPane中
}
}
}

您的描述与您的问题标题到底有什么关系?另外,您能否提供一些代码,以便我们更好地了解您想要实现的目标?“我可以使用什么使我的代码工作”—更多/更好的代码。如果没有上面的代码,我们很难提供帮助,我将调用GUI屏幕,当我在屏幕上单击按钮时,我应该返回运行方法。您应该编辑您的帖子以包含代码。它将被格式化并突出显示语法,然后删除这些注释。在上面的代码中,am将调用doInBackground方法????????????很抱歉,我从未使用过swingWorker类,例如
newProcessWorker().execute()
,看一看链接的教程我的代码在调试时工作正常,但是当我运行它时却没有执行任何东西,你在屏幕上看到了某种帧吗?我只能使用任何帧,只是我使用了一些条件来打印消息。我第一次想练习