Обновление браузера JxBrowser - PullRequest
0 голосов
/ 04 марта 2019

Я использую Java JxBrowser для отображения веб-сайта в моем приложении Swing.При нажатии на ссылку на этом веб-сайте обычно открывается новая вкладка (например, в Google Chrome).Но мое приложение открывает всплывающее окно для отображения нового окна.Можно ли обновить jframe моего приложения, чтобы всплывающее окно оставалось в jframe?Спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете написать свой собственный 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);
...