Я думаю, вам нужен слушатель, это мой пример приложения
/*
* This code is under license Creative Commons Attribution-ShareAlike 1.0
* <a href="https://creativecommons.org/licenses/by-sa/1.0/legalcode"></a>
*/
package javaapplication5;
import java.awt.Dimension;
import java.io.IOException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLFrameHyperlinkEvent;
public class DemoAppWebSwing extends JFrame {
private static final DemoAppWebSwing SINGLETON = new DemoAppWebSwing();
public void init() {
JEditorPane loginPane = new JEditorPane();
loginPane.setEditable(false);
try {
loginPane.setPage("https://github.com/vincenzopalazzo");
loginPane.addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
JEditorPane pane = (JEditorPane) e.getSource();
if (e instanceof HTMLFrameHyperlinkEvent) {
HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent) e;
HTMLDocument doc = (HTMLDocument) pane.getDocument();
doc.processHTMLFrameHyperlinkEvent(evt);
} else {
try {
pane.setPage(e.getURL());
} catch (Throwable t) {
t.printStackTrace();
}
}
}
}
});
} catch (IOException e) {
loginPane.setContentType("text/html");
loginPane.setText("<html>Could not load</html>");
}
JScrollPane scrollPane = new JScrollPane(loginPane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().add(scrollPane);
this.setPreferredSize(new Dimension(800, 600));
this.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SINGLETON.init();
}
});
}
}
С помощью HyperlinkListener вы можете получить другую страницу при нажатии на ссылку. Это моя реализация Listener:
loginPane.setPage("https://jsp-password-checking-unibas.herokuapp.com");
loginPane.addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
JEditorPane pane = (JEditorPane) e.getSource();
if (e instanceof HTMLFrameHyperlinkEvent) {
HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent) e;
HTMLDocument doc = (HTMLDocument) pane.getDocument();
doc.processHTMLFrameHyperlinkEvent(evt);
} else {
try {
pane.setPage(e.getURL());
} catch (Throwable t) {
t.printStackTrace();
}
}
}
}
})
Обсуждая с другим пользователем в разделе комментариев этого ответа, мы пришли к выводу, что JEditorPane
имеет определенные ограничения. Однако я искал другое решение для импорта веб-страницы в пользовательский интерфейс на основе Java. Вы можете сделать это, используя JavaFX
.
Проверьте ссылку на документацию из oracle. и/или этот пост для справки.
Это базовый пример с JavaFX
, который в основном делает то же самое, что и ранее показанный пример с использованием Swing
.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class LoginScreen extends Application {
@Override
public void start(final Stage stage) {
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.load("https://jsp-password-checking-unibas.herokuapp.com");
Scene scene = new Scene(browser, 800, 600);
stage.setTitle("Login Example");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
person
vincenzopalazzo
schedule
22.08.2019
here
даст вам представление о том, как это сделать. - person second   schedule 22.08.2019HttpClient
, вы можете отправить любой тип запроса на свой сервер, и вы должны получить от него правильный ответ. Возможно, вы захотите отредактировать свой вопрос и описать, какой ответ вы ожидаете от сервера. - person second   schedule 22.08.2019@vincenzopalazzo
должен показать вам общий вариант использования, однако он также не сработал для моей пробной страницы. Вероятно, он нуждается в некоторых корректировках. Теоретически, если вы введете данные правильно, вHyperLinkListener
вы сможете сгенерировать правильный запрос к вашему серверу, на который он должен ответить новой html-страницей. - person second   schedule 22.08.2019