Пользовательское контекстное меню JXbrowser, отображаемое только в правом краю окна - PullRequest
0 голосов
/ 18 февраля 2020

Я использую JxBrowser 6.23.1 со следующим кодом

public AppWindow(){

    setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
    setSize(1200,800);
    setLocationRelativeTo(null);
    setVisible(true);
    toFront();

    mBrowser = new Browser();
    BrowserView browserView = new BrowserView(mBrowser);

    mBrowser.setContextMenuHandler(new MyContextMenuHandler(browserView));
    mBrowser.loadURL("www.google.com");

    add(browserView, BorderLayout.CENTER);
}

private static class MyContextMenuHandler implements ContextMenuHandler {

    private final JComponent component;

    private MyContextMenuHandler(JComponent parentComponent) {
        this.component = parentComponent;
    }

    public void showContextMenu(final ContextMenuParams params) {
        final JPopupMenu popupMenu = new JPopupMenu();
        if (!params.getPageURL().isEmpty()) {
            popupMenu.add(createMenuItem("Copy Link", new Runnable() {
                public void run() {
                    String linkURL = params.getPageURL();
                    StringSelection selection = new StringSelection(linkURL);
                    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
                    clipboard.setContents(selection, selection);
                }
            }));

            popupMenu.add(createMenuItem("Open link in new window", new Runnable() {
                public void run() {
                    String linkURL = params.getPageURL();
                    System.out.println("linkURL = " + linkURL);
                }
            }));
        }

        final Browser browser = params.getBrowser();
        popupMenu.add(createMenuItem("Reload", new Runnable() {
            public void run() {
                browser.reload();
            }
        }));

        final Point location = params.getLocation();
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                popupMenu.show(component, location.x, location.y);
            }
        });
    }

    private static JMenuItem createMenuItem(String title, final Runnable action) {
        JMenuItem reloadMenuItem = new JMenuItem(title);
        reloadMenuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                action.run();
            }
        });
        return reloadMenuItem;
    }
}

Как мое приложение, контекстное меню, когда я щелкаю правой кнопкой мыши, отображается только на правом краю моего окна, как последние 200px от правого края. Если я щелкну где-нибудь в окне ближе к центру, оно ничего не показывает, хотя в моей отладке вызывается popupMenu.show(component, location.x, location.y);.

Это ошибка в версии этого JxBrowser или что-то, что я пропустил?

...