Swing - запуск браузера и прослушивание, когда пользователь закрывает его - PullRequest
2 голосов
/ 12 января 2011

У меня есть это конкретное требование.Если пользователь нажимает на кнопку в графическом интерфейсе, мне нужно запустить браузер.Мне нужно подождать две минуты.Если пользователь закрывает браузер до двух минут, мне нужно запустить окно «А».Если браузер остается открытым более двух минут, мне нужно запустить окно «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 () возвращается после запуска браузера.Мне нужно подождать, пока пользователь закроет окно браузера.Есть идеи, как это можно сделать?

1 Ответ

0 голосов
/ 12 января 2011

Во-первых, я думаю, вы должны взглянуть на JDIC , который, как я считаю, был интегрирован в Java SE.Теперь у вас есть два решения:

  1. Если вы используете браузер, встроенный в ваше приложение, вы сможете увидеть, потратил ли пользователь эти две минуты, наблюдая за пролетами мух.в этом случае с помощью счетчика времени, например, будет легко увидеть, какой кадр открывать.
  2. Либо вы предпочитаете (возможно, по уважительным причинам) использовать внешний веб-браузер (Опера, Хром, К-Мелеон, вы называете это).Затем вам нужно будет связаться с целевым веб-сайтом, чтобы узнать, когда пользователь закрыл фрейм.Действительно, для Javascript возможно видеть, когда страница / вкладка закрыта, и посылать свой собственный сервер запрос, чтобы сказать «пользователь 1258 только что закрыл окно».Затем, используя связь клиент / сервер, ваш сервер должен будет сообщить вашему приложению, сколько времени пользователь смотрел на окно.Гораздо сложнее, нет?
...