【发布时间】:2019-07-25 13:11:21
【问题描述】:
我正在使用 Java JxBrowser 在我的 Swing 应用程序上显示一个网站。单击本网站上的链接时,通常会打开一个新标签(例如在谷歌浏览器中)。但是我的应用程序正在打开一个弹出窗口以显示新窗口。是否可以更新我的应用程序的 jframe,以便弹出窗口保留在 jframe 中?谢谢!
【问题讨论】:
标签: java swing browser jframe jxbrowser
我正在使用 Java JxBrowser 在我的 Swing 应用程序上显示一个网站。单击本网站上的链接时,通常会打开一个新标签(例如在谷歌浏览器中)。但是我的应用程序正在打开一个弹出窗口以显示新窗口。是否可以更新我的应用程序的 jframe,以便弹出窗口保留在 jframe 中?谢谢!
【问题讨论】:
标签: java swing browser jframe jxbrowser
您可以编写自己的PopupHandler 来选择新的Browser 将出现在哪里:
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout());
com.teamdev.jxbrowser.chromium.Browser browser = new com.teamdev.jxbrowser.chromium.Browser();
com.teamdev.jxbrowser.chromium.swing.BrowserView browserView = new com.teamdev.jxbrowser.chromium.swing.BrowserView(browser);
browser.setPopupHandler(new com.teamdev.jxbrowser.chromium.PopupHandler() {
@Override
public com.teamdev.jxbrowser.chromium.PopupContainer handlePopup(com.teamdev.jxbrowser.chromium.PopupParams params) {
return new com.teamdev.jxbrowser.chromium.PopupContainer() {
@Override
public void insertBrowser(com.teamdev.jxbrowser.chromium.Browser popupBrowser, Rectangle initialBounds) {
// do something with popupBrowser
com.teamdev.jxbrowser.chromium.swing.BrowserView popupBrowserView = new com.teamdev.jxbrowser.chromium.swing.BrowserView(
popupBrowser);
frame.getContentPane().removeAll();
frame.getContentPane().add(popupBrowserView, BorderLayout.CENTER);
frame.getContentPane().validate();
frame.getContentPane().repaint();
}
};
}
});
frame.getContentPane().add(browserView, BorderLayout.CENTER);
【讨论】: