我有一个Swing应用程序,通过文本框获取输入,当点击/单击开始按钮时,我们以编程方式启动Ant脚本(org.apache.tools.ant.Project,org.apache.tools.ant。 ProjectHelper)(ant文件属性来自输入文本框)。这个Ant脚本将开始从CVS中检出代码。
现在,我想在用户点击“停止”按钮时停止执行此Ant脚本。
问题: 一旦用户填写文本框并点击Start,我就开始执行Ant脚本。因此,控件从该Applet或Input页面移动到后端java代码。所以我无法访问主applet中的“停止”按钮。
答案 0 :(得分:3)
我无法确定,但听起来你想要做的就是使用线程来执行后端Java代码,然后告诉该线程在用户点击停止时终止。
答案 1 :(得分:3)
public class Kill
{
public static void main(String[] args) throws Exception
{
ProcessBuilder p = new ProcessBuilder("notepad.exe","fake.xml");
p.directory(new File("c:/temp/"));
System.out.println("Starting ...");
Process x = p.start();
System.out.println("Started ...");
System.out.println("Sleeping ...");
Thread.sleep(3000);
System.out.println("Woke up ...");
System.out.println("Destroying...");
x.destroy();
x.waitFor(); // If you don't wait for it then the application will be terminated as soon as it is started
System.out.println("Return value = " + x.exitValue());
System.out.println("Over ...");
}
}
一种方法是使用x.waitFor();
方法并继续等待用户操作以终止蚂蚁进程,或者它可以自己完成。无论如何,您将需要x.destroy();
并使用x.exitValue()
检查成功与失败。但是在工作线程中使用它更有意义,因为UI将保持响应。