0

jxbrowser 6.0 のポップアップ ハンドラを実装しました。

ポップアップが閉じられたことをメイン ブラウザに送信する (イベント) 方法はありますか?

メイン ブラウザは、開いているポップアップが閉じられるまで、このアクティビティを一時停止する必要があります。

4

2 に答える 2

0

ポップアップがいつ閉じられるかを調べるには、次の方法を使用します。

browser.setPopupHandler(new PopupHandler() {
    public PopupContainer handlePopup(PopupParams params) {
        return new PopupContainer() {
            public void insertBrowser(final Browser browser, final Rectangle initialBounds) {
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        BrowserView popupView = new BrowserView(browser);
                        popupView.setPreferredSize(initialBounds.getSize());

                        final JFrame popupFrame = new JFrame("Popup");
                        popupFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
                        popupFrame.add(popupView, BorderLayout.CENTER);
                        popupFrame.pack();
                        popupFrame.setLocation(initialBounds.getLocation());
                        popupFrame.setVisible(true);
                        popupFrame.addWindowListener(new WindowAdapter() {
                            @Override
                            public void windowClosing(WindowEvent e) {
                                browser.dispose();
                            }
                        });

                        browser.addDisposeListener(new DisposeListener<Browser>() {
                            public void onDisposed(DisposeEvent<Browser> event) {
                                popupFrame.setVisible(false);
                                // Notify parent that popup has been closed.
                            }
                        });
                    }
                });
            }
        };
    }
});
于 2016-03-09T13:56:15.037 に答える
0

ブール変数を使用した実行中のソリューションを既に見つけていましたが、よりエレガントなソリューションが必要です。

            browser.addDisposeListener(new DisposeListener() {
                public void onDisposed(DisposeEvent event) {
                    finestraAComparsa.setVisible(false);
                    Automazione.finestraAComparsaChiusa = true;//
                    // Notify parent that popup has been closed.
                }
            });

メインのブラウザー クラス ファイルで:

                try {
                    while (!finestraAComparsaChiusa) {
                        Thread.sleep(1000);
                    }
                    finestraAComparsaChiusa = false;
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
于 2016-03-15T13:17:29.250 に答える