jxbrowser 实现自定义右键菜单
2024-10-06 23:43:06
https://blog.csdn.net/shuaizai88/article/details/73743691
public static void main(String[] args) {
JPopupMenu.setDefaultLightWeightPopupEnabled(false); Browser browser = new Browser();
BrowserView view = new BrowserView(browser); JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(view, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true); browser.setContextMenuHandler(new MyContextMenuHandler(view));
browser.loadURL("http://baidu.com");
} 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.getLinkText().isEmpty()) {
popupMenu.add(createMenuItem("打开新窗口", new Runnable() {
public void run() {
String linkURL = params.getLinkURL();
System.out.println("linkURL = " + linkURL);
}
}));
} final Browser browser = params.getBrowser();
popupMenu.add(createMenuItem("刷新网页", 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;
}
}
最新文章
- 语义化HTML:p、h1-6、q、blockquote、hr、address、code、pre、var、cite、dfn和samp
- Selenium 获取隐藏元素的内容
- 了解Json
- mybatis分页插件PageHelper的使用(转)
- VALGRIND
- jQuery1.9.1--attr,prop与val方法源码分析
- php 调试工具及学习PHP垃圾回收机制了解引用计数器的概念
- nova 配置文件
- JavaScript面向对象深入理解原型
- Scrapy爬虫框架第三讲(linux环境)
- 根据http协议下载文件保存到相应的文件下
- 异常值处理outlier
- 如何计算UDP/TCP检验和checksum
- Gym - 100989H
- Xcode10 library not found for -lstdc++ 找不到问题
- VLC1.2 播放视频迟滞卡
- Python3之turtle模块的使用
- ANT配合FIS执行前端打包任务
- Python对文件和文件路径的管理
- PMP备考指南之第一章:引论