java - Swing - 启动浏览器并在用户关闭时收听

标签 java swing browser wait processbuilder

我有这个具体要求。 如果用户单击 GUI 中的按钮,我需要启动浏览器。 我需要等两分钟。如果用户在两分钟前关闭浏览器,我需要启动窗口“A”。如果浏览器保持打开状态超过两分钟,我需要启动窗口“B”。

目前我可以启动浏览器窗口。但是当用户关闭它时无法收听。下面是我编写的代码的快照。

String url = "www.google.com";
Process browserProcess;
String commandLine = "rundll32 url.dll,FileProtocolHandler " + url;
String[] args = commandLine.split(" ");
ProcessBuilder pb = new ProcessBuilder(args);
pb.redirectErrorStream(true);

browserProcess = pb.start();
in = new BufferedReader(new InputStreamReader(browserProcess.getErrorStream()));

String lineRead;
while ((lineRead = in.readLine()) != null) {
//do nothing
}

int exitVal;
System.out.println("Waiting...");
exitVal = browserProcess.waitFor();

System.out.println("Done");

目前,一旦浏览器启动,waitFor() 就会返回。我需要等到用户关闭浏览器窗口。知道如何实现吗?

最佳答案

首先,我认为您应该看一下 JDIC ,我相信它已经集成到 Java SE 中。现在,您有两个解决方案。

  1. 您可以使用集成到您的应用程序中的浏览器,然后您将能够看到用户是否花了这两分钟观看苍蝇飞过。在这种情况下,通过使用计时计数器(例如)可以很容易地查看要打开哪一帧。
  2. 您可能更喜欢(可能有充分的理由)使用外部网络浏览器(Opera、Chromium、K-meleon,应有尽有)。然后,您必须与目标网站通信以了解用户何时关闭框架。实际上,Javascript 可以查看页面/选项卡何时关闭,并向其自己的服务器发送一个查询“用户 1258 刚刚关闭了窗口”。然后,使用客户端/服务器通信,您的服务器将必须告诉您的应用程序用户查看窗口的时间。复杂得多,不是吗?

关于java - Swing - 启动浏览器并在用户关闭时收听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4670174/

相关文章:

java - JPanel 图像背景与其他 JPanel 重叠

java - 用java按钮在浏览器中打开一个链接?

browser - 解析浏览器地址栏中的 mDNS .local URL

java - 失败的测试用例,我做错了什么?

java - 为什么空指针异常不提供为空的表达式?

java - 自动刷新 JPanel 面板

javascript - CTRL 键检查 javascript 中的右 ALT

java - 有 ArraySet 和 ArrayMap 这样的东西吗?

java - android.content.res.Resources$NotFoundException : String resource ID #0x2

java - 如何在java上制作一个开/关按钮?