Как вы открываете веб-страницы на Java?
Вопрос
Есть ли простой способ открыть веб-страницу в JPanel графического интерфейса?
Если нет, то как открыть веб-страницу с помощью веб-браузера по умолчанию на компьютере?
Я надеюсь на что-то, что я смогу сделать менее чем с 20 строками кода, и самое большее, что потребуется для создания одного класса.Хотя нет причин для 20, просто надеюсь на небольшой код...
Я планирую открыть руководство, чтобы перейти к игре.Руководство находится в Сети и содержит несколько страниц, но страницы ссылаются друг на друга, поэтому я надеюсь, что мне нужно вызвать только один URL с моим кодом.
Решение
Открыть веб-страницу с помощью веб-браузера по умолчанию несложно:
java.awt.Desktop.getDesktop().browse(theURI);
Встраивать браузер не так-то просто. JEditorPane
имеет некоторые Способность к HTML (если я правильно помню свои ограниченные знания Swing), но она очень ограничена и не подходит для браузера общего назначения.
Другие советы
Есть два стандартных способа, о которых я знаю:
- Стандартный
JEditorPane
компонент Desktop
.getDesktop()
.browse(URI)
чтобы открыть браузер пользователя по умолчанию (Java 6 или более поздняя версия)Скоро появится и третий:
- В
JWebPane
компонент, который, по-видимому, еще не был выпущен
JEditorPane
это очень голые кости;он не обрабатывает CSS или JavaScript, и вам даже приходится обрабатывать гиперссылки самостоятельно.Но вы можете встроить его в свое приложение более плавно, чем это было бы при запуске FireFox.
Вот пример того, как использовать гиперссылки (при условии, что в ваших документах не используются фреймы):
// ... initialize myEditorPane
myEditorPane.setEditable(false); // to allow it to generate HyperlinkEvents
myEditorPane.addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ENTERED) {
myEditorPane.setToolTipText(e.getDescription());
} else if (e.getEventType() == HyperlinkEvent.EventType.EXITED) {
myEditorPane.setToolTipText(null);
} else if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
try {
myEditorPane.setPage(e.getURL());
} catch (IOException ex) {
// handle error
ex.printStackTrace();
}
}
}
});
Если вы разрабатываете апплет, вы можете использовать AppletContext.showДокумент.Это было бы однострочным:
getAppletContext().showDocument("http://example.com", "_blank");
Если вы разрабатываете настольное приложение, вы можете попробовать Запуск браузера "Голые кости".
вообще не пробовал этого, но анализатор и просмотрщик HTML cobra из браузер lobo, браузер, написанный на чистой Java, может быть тем, что вам нужно.Они предоставляют пример кода для настройки онлайн-средства просмотра html:
import javax.swing.*;
import org.lobobrowser.html.gui.*;
import org.lobobrowser.html.test.*;
public class BareMinimumTest {
public static void main(String[] args) throws Exception {
JFrame window = new JFrame();
HtmlPanel panel = new HtmlPanel();
window.getContentPane().add(panel);
window.setSize(600, 400);
window.setVisible(true);
new SimpleHtmlRendererContext(panel, new SimpleUserAgentContext())
.navigate("http://lobobrowser.org/browser/home.jsp");
}
}
Я не знаю, существует ли такая встроенная функция, но я бы использовал Время выполнения классовые исполнительный с помощью iexplore.exe или firefox.exe в качестве аргумента.
Пожалуйста, попробуйте приведенный ниже код :
import java.awt.Desktop;
import java.net.URI;
import java.net.URISyntaxExaception;
//below is the code
//whatvever the url is it has to have https://
Desktop d = Desktop.getDesktop();
try {
d.browse(new URI("http://google.com"));
} catch (IOException | URISyntaxException e2) {
e2.printStackTrace();
}