Sto cercando di ottenere una java gui per aprire una pagina web. Quindi la GUI esegue un codice che fa le cose e quindi produce un file html. Poi voglio che questo file si apra in un browser web (preferibilmente Firefox) non appena viene creato. Come potrei fare per farlo?Ottenere java gui per aprire una pagina Web nel browser
risposta
Se si utilizza Java 6 o versioni successive, consultare l'API Desktop, in particolare browse. Usare in questo modo (non testato):
// using this in real life, you'd probably want to check that the desktop
// methods are supported using isDesktopSupported()...
String htmlFilePath = "path/to/html/file.html"; // path to your new file
File htmlFile = new File(htmlFilePath);
// open the default web browser for the HTML page
Desktop.getDesktop().browse(htmlFile.toURI());
// if a web browser is the default HTML handler, this might work too
Desktop.getDesktop().open(htmlFile);
Ho usato BrowserLauncher2 con successo. Richiama il browser predefinito su tutte le piattaforme testate. Lo uso per la demo del software tramite JNLP. Il software scarica, esegue e guida il browser dell'utente a pagine di informazioni/feedback ecc.
JDK 1.4 e versioni successive, credo.
Se l'URL della pagina viene modificato a causa dell'attività dell'utente, è possibile ottenere il nuovo URL utilizzando BrowserLauncher2? –
Ya, ma se si desidera aprire la pagina Web nel browser Web predefinito da un programma java, è possibile provare a utilizzare questo codice.
So che tutte queste risposte hanno sostanzialmente risposto alla domanda, ma qui è un codice per un metodo che fallisce con garbo.
Nota che la stringa può essere la posizione di un file HTML
/**
* If possible this method opens the default browser to the specified web page.
* If not it notifies the user of webpage's url so that they may access it
* manually.
*
* @param url
* - this can be in the form of a web address (http://www.mywebsite.com)
* or a path to an html file or SVG image file e.t.c
*/
public static void openInBrowser(String url)
{
try
{
URI uri = new URL(url).toURI();
Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
desktop.browse(uri);
} else {
throw new Exception("Desktop not supported, cannout open browser automatically");
}
}
catch (Exception e)
{
/*
* I know this is bad practice
* but we don't want to do anything clever for a specific error
*/
e.printStackTrace();
// Copy URL to the clipboard so the user can paste it into their browser
StringSelection stringSelection = new StringSelection(url);
Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
clpbrd.setContents(stringSelection, null);
// Notify the user of the failure
WindowTools.informationWindow("This program just tried to open a webpage." + "\n"
+ "The URL has been copied to your clipboard, simply paste into your browser to access.",
"Webpage: " + url);
}
}
Hey. Ancora non riesco a farlo funzionare. Ottengo il seguente errore: "Messaggio di errore: il sistema non riesce a trovare il percorso specificato." Questo è anche se ho dato il percorso esatto. –
@TheSpecialOne - stai fornendo un percorso _local_ al file? ad esempio: su una finestra di windows, htmlFilePath sembrerebbe "c: \ path \ to \ file.html". Non utilizzare la sintassi dell'URL ... –