2009-04-01 4 views
3

Ich habe eine statische Methode, um einen Browser mit einer bestimmten URL zu starten. Wenn der Browser bereits geöffnet ist, übernimmt dies das aktive Browserfenster.Kann die Java Desktop-Bibliothek eine URL in einem neuen Browser Tab oder Fenster starten?

Dies ist ein Problem, wenn der Browser für etwas anderes verwendet wird, z. B. für die Dateneingabe. Gibt es eine Möglichkeit, eine URL in einem neuen Browserfenster (oder Tab) zu öffnen?

public static void openURL(String urlText) 
{ 
    if (Desktop.isDesktopSupported()) 
    { 
     URI uri = URI.create(urlText); 
     try 
     { 
      Desktop.getDesktop().browse(uri); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

Alternativ, gibt es einen besseren Weg, dies zu tun?

Antwort

0

Unter Windows gibt es eine Möglichkeit zu finden, was der Standardbrowser ist. Sie werden die Befehle

REG QUERY HKCR\.html /ve 

die

! REG.EXE VERSION 3.0 

HKEY_CLASSES_ROOT\.html 
    <NO NAME> REG_SZ FirefoxHTML 

Dann würden Sie würde verwenden müssen zurückkehren abfragen FirefoxHTML (oder Wert was auch immer zurückgegeben wurde) mit dem gleichen Befehl, und fügen Sie den folgenden Schlüssel

REG QUERY HKCR\FirefoxHTML\shell\open\command /ve 

und dies würde zurückkehren

! REG.EXE VERSION 3.0 

HKEY_CLASSES_ROOT\FirefoxHTML\shell\open\command 
    <NO NAME> REG_SZ "C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1" 

Von hier aus können Sie die zurückgegebenen Zeilen analysieren, um den Speicherort der ausführbaren Datei des Browsers abzurufen.

Sie können alles tun, um die Java-Runtime-Klasse:

Runtime.getRuntime.exec(cmdString); 

Diese eine Menge individueller Codierung erfordern, aber man konnte im Wesentlichen Ihre eigene API erstellen den Standard-Browser unter Windows zugreifen.

Here is an example of accessing the Windows registry in Java.

You could also search Google for more information on finding default browser in the registry.

Wie für andere Plattformen (Mac, Linux, etc.), ich bin sicher, dass es eine bestimmte Art und Weise ist es, den Pfad zum Standard-Browser zu erhalten.

Hoffe, das hilft!

+0

Ich glaube nicht, dass das die Frage beantwortet. Die Frage war nicht "Wie öffne ich eine URL im Standardbrowser?" War "Wie öffne ich eine URL in einem neuen Tab?" –

+0

Sie können diese Methode verwenden, um ein neues Browserfenster aufzurufen. –

1

Sie müssen dies wahrscheinlich im Browser und nicht in Ihrem Startcode konfigurieren. Sie können möglicherweise einige Startflags finden, die das gewünschte Verhalten verursachen, aber Sie binden den Code dabei an einen bestimmten Browser.

0

Es klingt, als ob die java.awt.Desktop-API diese Funktionalität nicht bietet.

Hier ist ein Link, den wir auf die java.net forums gefunden, wo diese im Jahr 2006

Eine Antwort dort genannten JDIC's WebBrowser gefragt wurde.

1

können Sie Yose Methode verwenden, um festzustellen, welche Standard-Browser ist und dann verwenden Sie die folgenden Befehle :

firefox.exe -new-tab IE7 http://blogs.msdn.com/tonyschr/archive/2007/01/19/ie-automation-amp-tabs.aspx Oper -newpage

Beachten Sie, dass einige Browser unterstützen keine Tabs, oder haben keine Befehlszeile params eine URL in einem Tab zu öffnen. In diesem Fall können Sie die AHK-Skript-Engine verwenden.