【问题标题】:Swing - Launch browser and listen when user closes itSwing - 启动浏览器并在用户关闭时收听
【发布时间】:2011-01-12 14:56:40
【问题描述】:

我有这个特定的要求。 如果用户单击 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() 就会返回。我需要等到用户关闭浏览器窗口。知道怎么做吗?

【问题讨论】:

  • 您忘记了标签式浏览。
  • 必须更易于使用 Java Desktop API 来启动浏览器:Desktop.getDesktop().browse(new URI("http://www.google.com");
  • 对不起,我忘了说,我只为 java 1.5 编写代码。所以不能使用桌面 API :(
  • 当然可以,Java Desktop API 可以单独下载。

标签: java swing browser wait processbuilder


【解决方案1】:

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

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

【讨论】:

  • 嗯.. 是的,这似乎很复杂,可能是因为我是 java 新手。我需要使用机器上的默认浏览器打开链接。我不应该将它集成到应用程序中。我在某处读到我们可以使用封装在浏览器进程中的批处理脚本并使用线程来完成它。对此有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 2021-04-23
相关资源
最近更新 更多