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中内嵌浏览器相关推荐

  1. Java实现内嵌浏览器

    创建项目 ---->   导入需要的jar ---->  代码实现 需要的jar: https://pan.baidu.com/s/1MEZ1S0LnKSMGQm24QWgmCw 代码: ...

  2. java gui 嵌入浏览器_DJNativeSwing-SWT组件-Java GUI中内嵌浏览器

    Java项目中经常需要在GUI程序中嵌入浏览器,而Swing自带的组件对CSS.JS的支持不是很好,网上也有很多组件,参考 但是由于对各个平台的支持不是很好,笔者是在Mac系统下进行开发,很多组件只支 ...

  3. android之在view中内嵌浏览器的方法

    我要做的一个东西是在一个页面的中间嵌入浏览器,一开始不知道从哪里开始,因为以前用的都是Textveiw或者editVeiw之类的控件,而它们并不能用来显示网页的内容,怎么办呢? 首先想到的是:是不是有 ...

  4. 【java】本地客户端内嵌浏览器3 - Swing 使用 Spring 框架 + 打包项目 + 转exe + 源码

    目录 ★☆★ 写在前面 ★☆★ ★☆★ 本系列文章 ★☆★ ★☆★ 开源网址 ★☆★ 一.给 Swing 加上 Spring 0.前期努力 I. SpringBoot II. SpringMVC 1. ...

  5. 【java】本地客户端内嵌浏览器2 - chrome/chromium/cef/jcef

    目录 ★☆★ 写在前面 ★☆★ ★☆★ 本系列文章 ★☆★ ★☆★ 开源网址 ★☆★ 一.发现新大陆 - CEF/JCEF 0.前言 1.使用 jcef.jar 搭建项目 2.启动包含 jcef.ja ...

  6. Java swing 做一个传统Web项目的桌面程序启动器(内嵌浏览器)

    背景:公司有个老项目,web项目,但是使用者都想要一个桌面应用程序.实际上,是web程序的启动较为麻烦.这里每次都需要启动Tomcat和浏览器. 想法:重写一个项目太麻烦,想想成本,人间不值得.于是我 ...

  7. java使用swing实现内嵌浏览器

    java使用swing实现内嵌浏览器 1.使用swing内嵌浏览器需要导入3个jar包,第3个根据电脑版本选择 dj-native-swing-swt.jar     dj-native-swing. ...

  8. 记一次定位解决SpringBoot中内嵌Tomcat的Bug问题

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 segmentfault.com/a/1190000038760707 推荐:h ...

  9. javaFX实现桌面应用程序内嵌浏览器(一、框架建设)

    一.jdk不匹配问题 修改jdk版本不成功: 1.注意环境变量是否更改 2.jdk路径已经更改成功但cmd打开输入Java -version还是原先版本:在PATH的那一溜里将把JAVA_HOME放到 ...

最新文章

  1. MVC开发Markdown编辑器(1)
  2. [ An Ac a Day ^_^ ] hdu 5835 Danganronpa 令人发指
  3. hadoop知识整理(2)之MapReduce
  4. java多重继承用在什么地方_Java提高篇——Java实现多重继承
  5. java常用方法名_Java语言常见名称有哪些
  6. Javascript进阶:数据类型
  7. mysql怎么连接数据连接池_Mysql数据库连接池
  8. h3c服务器虚拟光驱上传慢,01-正文
  9. Linux 的du和df命令
  10. 韩语在线翻译图片识别_在线翻译有道小程序
  11. mysql ndb是什么_MySQL NDB Cluster介绍
  12. 单片机进阶---PCB开发之照葫芦画瓢(一)
  13. linux ext4 img解包打包教程,安卓解包、修改、打包system.img/system.img.ext4教程
  14. .Net Core- Polly 的使用实践
  15. Linux零基础入门到进阶
  16. pptvvpn服务器未响应,关闭或删除pptv多屏互动服务器的方法
  17. 怎么用 FEBE 还原 Firefox 设置?[ZT]
  18. TikTok英国最新热卖趋势,冲刺双旦
  19. 53款热门驱动电机详细参数,拿走不谢
  20. 数字1的个数(思维/数学)

热门文章

  1. windows_DFS服务文件服务
  2. 出现多个虚拟显示器(通用非即插即用监视器)处理办法
  3. ISP之Sharpen
  4. 撸一撸今年阿里,华为,百度,腾讯,美团,头条,滴滴等的面试题
  5. springboot-用户注册模块实现流程与主要代码编写
  6. 调制方式演变(一)--BPSK,QPSK,OPSK
  7. 如何在 Windows 10 上安装和配置 SNMP 服务并通过组策略配置 SNMP 设置
  8. vep加密视频破解转换为mp4教程
  9. windows平台的剪贴板管理工具Clipx和插件
  10. [理财日记] 简七小姐的理财日记(一)---教你省力地记账