如何将控制权从java swing框架返回到普通java代码
我正在开发一个java应用程序,使用Swigs开发GUI屏幕。我应该运行一些应用程序文件。我使用Runtime.exec()方法连接到命令提示符。如果我的应用程序无法正确执行,那么会出现一个GUI框架,要求weather再次运行该文件或跳过该文件 这里我的问题是,当我说再次运行该文件时,控件应该返回到使用ui.setvisible(true)调用帧的位置如何将控制权从java swing框架返回到普通java代码,java,swing,Java,Swing,我正在开发一个java应用程序,使用Swigs开发GUI屏幕。我应该运行一些应用程序文件。我使用Runtime.exec()方法连接到命令提示符。如果我的应用程序无法正确执行,那么会出现一个GUI框架,要求weather再次运行该文件或跳过该文件 这里我的问题是,当我说再次运行该文件时,控件应该返回到使用ui.setvisible(true)调用帧的位置 如果不是swing框架,我可以使用什么使代码工作 public static boolean runFormat(String format,
如果不是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()
,看一看链接的教程我的代码在调试时工作正常,但是当我运行它时却没有执行任何东西,你在屏幕上看到了某种帧吗?我只能使用任何帧,只是我使用了一些条件来打印消息。我第一次想练习