Java中内嵌浏览器
public class JavaWebBrowser{protected static final String LS = System.getProperty("line.separator");public static JComponent createContent() {JPanel contentPane = new JPanel(new BorderLayout());//初始化标签栏JTabbedPane tabbedPane = new JTabbedPane();tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);//初始化浏览器JWebBrowser webBrowser = new JWebBrowser();webBrowser.setMenuBarVisible(false);webBrowser.navigate("www.baidu.com");//为浏览器设置监听事件addWebBrowserListener(tabbedPane, webBrowser);tabbedPane.addTab("new", webBrowser);//设置标题setPanelTitle(tabbedPane, webBrowser, "百度一下,你就知道");//把控件添加进JPanelcontentPane.add(tabbedPane, BorderLayout.CENTER);return contentPane;}/*** 设置标题* @param tabbedPane* @param webBrowser* @param title*/private static void setPanelTitle(final JTabbedPane tabbedPane, final JWebBrowser webBrowser, String title) {//新建一个面板JPanel jpPanel = new JPanel();jpPanel.setOpaque(false);//添加一个文本JLabel jLabel = new JLabel(title);//添加一个按钮TabButton jButton = new TabButton();jButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int closeNumberTab = tabbedPane.indexOfComponent(webBrowser);tabbedPane.removeTabAt(closeNumberTab);}});jpPanel.add(jLabel, BorderLayout.WEST);jpPanel.add(jButton, BorderLayout.EAST);tabbedPane.setTabComponentAt(tabbedPane.getTabCount() - 1, jpPanel);}/*** 设置新窗口* * @param tabbedPane* @param webBrowser*/private static void addWebBrowserListener(final JTabbedPane tabbedPane, final JWebBrowser webBrowser) {webBrowser.addWebBrowserListener(new WebBrowserAdapter() {@Overridepublic void titleChanged(WebBrowserEvent e) { //改变标题for (int i = 0; i < tabbedPane.getTabCount(); i++) {if (tabbedPane.getComponentAt(i) == webBrowser) {if (i == 0) {return;}String title = webBrowser.getPageTitle();if (title.length() > 15)title = title.substring(0, 15);setPanelTitle(tabbedPane, webBrowser, title);break;}}}@Overridepublic void windowWillOpen(WebBrowserWindowWillOpenEvent e) { //将要打开新窗口JWebBrowser newWebBrowser = new JWebBrowser();addWebBrowserListener(tabbedPane, newWebBrowser);tabbedPane.addTab("", newWebBrowser);e.setNewWebBrowser(newWebBrowser);}@Overridepublic void windowOpening(WebBrowserWindowOpeningEvent e) { //新窗口打开中tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1);e.getWebBrowser().setMenuBarVisible(false);}});}public static void main(String[] args) {NativeInterface.open();UIUtils.setPreferredLookAndFeel();SwingUtilities.invokeLater(new Runnable() {public void run() {final JFrame frame = new JFrame();frame.setIconImage(Toolkit.getDefaultToolkit().getImage(JavaBrowser.class.getResource("/Img/ic_launcher.png")));frame.setTitle("自定义浏览器");// double width =// Toolkit.getDefaultToolkit().getScreenSize().getWidth();// double height =// Toolkit.getDefaultToolkit().getScreenSize().getHeight();frame.setSize(900, 800);frame.setExtendedState(JFrame.MAXIMIZED_BOTH);// frame.setAlwaysOnTop(true); //设置永远置于最上层// frame.setLocationRelativeTo(null);// 居中显示// frame.setLocation(0, 0);// frame.setLocationByPlatform(true);// frame.setResizable(false); //禁用最大化按钮frame.getContentPane().add(createContent(), BorderLayout.CENTER);frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);frame.setVisible(true);frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {if (JOptionPane.showConfirmDialog(null, "确定要退出吗?", "先森科技", JOptionPane.OK_CANCEL_OPTION) == 0) {System.exit(0);}return;}});}});NativeInterface.runEventPump();}}
以上是界面的开发效果,下面的是自定义的BUTTON作用是关闭当前的界面
class TabButton extends JButton {private static final long serialVersionUID = 1L;public TabButton() { int size = 17; setPreferredSize(new Dimension(size, size)); setToolTipText("关闭"); setUI(new BasicButtonUI()); setContentAreaFilled(false); setFocusable(false); setBorder(BorderFactory.createEtchedBorder()); setBorderPainted(false); //翻转效果 setRolloverEnabled(true); //鼠标事件,进入时画边框,移出时取消边框 addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { Component component = e.getComponent(); if (component instanceof AbstractButton) { AbstractButton button = (AbstractButton) component; button.setBorderPainted(true); } } @Override public void mouseExited(MouseEvent e) { Component component = e.getComponent(); if (component instanceof AbstractButton) { AbstractButton button = (AbstractButton) component; button.setBorderPainted(false); } } }); } @Override public void updateUI() { } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g.create(); //鼠标按下时偏移一个坐标点 if (getModel().isPressed()) { g2.translate(1, 1); } g2.setStroke(new BasicStroke(2)); g2.setColor(Color.BLACK); //鼠标在按钮上时为红色 if (getModel().isRollover()) { g2.setColor(Color.RED); } int delta = 5; g2.drawLine(delta, delta, getWidth() - delta - 1, getHeight() - delta - 1); g2.drawLine(getWidth() - delta - 1, delta, delta, getHeight() - delta - 1); g2.dispose(); }
}
以上就是所有代码,其中自定义Button使用的网络上面的代码。。。
Java中内嵌浏览器相关推荐
- Java实现内嵌浏览器
创建项目 ----> 导入需要的jar ----> 代码实现 需要的jar: https://pan.baidu.com/s/1MEZ1S0LnKSMGQm24QWgmCw 代码: ...
- java gui 嵌入浏览器_DJNativeSwing-SWT组件-Java GUI中内嵌浏览器
Java项目中经常需要在GUI程序中嵌入浏览器,而Swing自带的组件对CSS.JS的支持不是很好,网上也有很多组件,参考 但是由于对各个平台的支持不是很好,笔者是在Mac系统下进行开发,很多组件只支 ...
- android之在view中内嵌浏览器的方法
我要做的一个东西是在一个页面的中间嵌入浏览器,一开始不知道从哪里开始,因为以前用的都是Textveiw或者editVeiw之类的控件,而它们并不能用来显示网页的内容,怎么办呢? 首先想到的是:是不是有 ...
- 【java】本地客户端内嵌浏览器3 - Swing 使用 Spring 框架 + 打包项目 + 转exe + 源码
目录 ★☆★ 写在前面 ★☆★ ★☆★ 本系列文章 ★☆★ ★☆★ 开源网址 ★☆★ 一.给 Swing 加上 Spring 0.前期努力 I. SpringBoot II. SpringMVC 1. ...
- 【java】本地客户端内嵌浏览器2 - chrome/chromium/cef/jcef
目录 ★☆★ 写在前面 ★☆★ ★☆★ 本系列文章 ★☆★ ★☆★ 开源网址 ★☆★ 一.发现新大陆 - CEF/JCEF 0.前言 1.使用 jcef.jar 搭建项目 2.启动包含 jcef.ja ...
- Java swing 做一个传统Web项目的桌面程序启动器(内嵌浏览器)
背景:公司有个老项目,web项目,但是使用者都想要一个桌面应用程序.实际上,是web程序的启动较为麻烦.这里每次都需要启动Tomcat和浏览器. 想法:重写一个项目太麻烦,想想成本,人间不值得.于是我 ...
- java使用swing实现内嵌浏览器
java使用swing实现内嵌浏览器 1.使用swing内嵌浏览器需要导入3个jar包,第3个根据电脑版本选择 dj-native-swing-swt.jar dj-native-swing. ...
- 记一次定位解决SpringBoot中内嵌Tomcat的Bug问题
你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 segmentfault.com/a/1190000038760707 推荐:h ...
- javaFX实现桌面应用程序内嵌浏览器(一、框架建设)
一.jdk不匹配问题 修改jdk版本不成功: 1.注意环境变量是否更改 2.jdk路径已经更改成功但cmd打开输入Java -version还是原先版本:在PATH的那一溜里将把JAVA_HOME放到 ...
最新文章
- MVC开发Markdown编辑器(1)
- [ An Ac a Day ^_^ ] hdu 5835 Danganronpa 令人发指
- hadoop知识整理(2)之MapReduce
- java多重继承用在什么地方_Java提高篇——Java实现多重继承
- java常用方法名_Java语言常见名称有哪些
- Javascript进阶:数据类型
- mysql怎么连接数据连接池_Mysql数据库连接池
- h3c服务器虚拟光驱上传慢,01-正文
- Linux 的du和df命令
- 韩语在线翻译图片识别_在线翻译有道小程序
- mysql ndb是什么_MySQL NDB Cluster介绍
- 单片机进阶---PCB开发之照葫芦画瓢(一)
- linux ext4 img解包打包教程,安卓解包、修改、打包system.img/system.img.ext4教程
- .Net Core- Polly 的使用实践
- Linux零基础入门到进阶
- pptvvpn服务器未响应,关闭或删除pptv多屏互动服务器的方法
- 怎么用 FEBE 还原 Firefox 设置?[ZT]
- TikTok英国最新热卖趋势,冲刺双旦
- 53款热门驱动电机详细参数,拿走不谢
- 数字1的个数(思维/数学)