java swing开发最简单的浏览器源代码下载

java swing开发毕业设计-进销存管理系统源代码下载 java swing开发毕业设计-进销存管理系统源代码下载 源代码下载地址:http://www.zuidaima.com/share/1571393652182016.htm 阅读详情

原文:java swing开发最简单的浏览器源代码下载

源代码下载地址:http://www.zuidaima.com/share/1550463483628544.htm

java swing开发最简单的浏览器,已测试....

java swing开发最简单的浏览器源代码下载

package com.zuidaima;
	    				
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.CloseWindowListener;
import org.eclipse.swt.browser.LocationAdapter;
import org.eclipse.swt.browser.LocationEvent;
import org.eclipse.swt.browser.OpenWindowListener;
import org.eclipse.swt.browser.ProgressAdapter;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.StatusTextEvent;
import org.eclipse.swt.browser.StatusTextListener;
import org.eclipse.swt.browser.TitleEvent;
import org.eclipse.swt.browser.TitleListener;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;

/**
 * 挺好使的.....
 * @author www.zuidaima.com
 *
 */
public class Liulanqi {//基于标签式的浏览器

 private volatile String newUrl = null;// 最新输入的链接

 private volatile boolean loadCompleted = false;//表示当前页面完全导入
 
 private volatile boolean openNewItem=false;//表示新的页面在新窗口中打开
 
 /*
  * 浏览器的当前标签参数
  */
 
 private TabItem tabItem_now;//当前标签项
 
 private Browser browser_now;//当前功能浏览器

 /*
  * 浏览器设置参数
  */
 private String homePage = "www.baidu.com";// 浏览器的首页

 /*
  * 浏览器外形布置
  */
 private Button button_back;//后退按钮

 private Button button_forward;//向前按钮

 private Button button_go;//前进按钮

 private Button button_stop;//停止按钮

 private Combo combo_address;// 地址栏

 private Browser browser_default = null;// 浏览窗口

 private ProgressBar progressBar_status;// 网页打开进度表,即页面导入情况栏

 private Label label_status;// 最终网页打开过程显示

 private TabFolder tabFolder;// Browser的容器

 private Composite composite_tool;// 工具栏区域

 private Composite composite_browser;// 浏览窗口区域

 private Composite composite_status;// 状态栏区域

 protected Display display;

 protected Shell shell_default;

 /**
  * Launch the application
  * 
  * @param args
  */
 public static void main(String[] args) {
  try {
   Liulanqi window = new Liulanqi();
   window.open();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 /**
  * Open the window
  */
 public void open() {
  display = Display.getDefault();
  shell_default = new Shell(display);
  createContents();

  shell_default.open();
  shell_default.layout();
  while (!shell_default.isDisposed()) {
   if (!display.readAndDispatch())
    display.sleep();
  }
 }

 /**
  * Create contents of the window
  */
 protected void createContents() {
  shell_default.setSize(649, 448);
  shell_default.setText("浏览器");
  GridLayout gl_shell = new GridLayout();
  gl_shell.marginWidth = 0;// 组件与容器边缘的水平距离
  gl_shell.marginHeight = 0;// 组件与容器边缘的垂直距离
  gl_shell.horizontalSpacing = 0;// 组件之间的水平距离
  gl_shell.verticalSpacing = 0;// 组件之间的垂直距离
  shell_default.setLayout(gl_shell);

  /*
   * 创建浏览器界面
   */
  //createMenu();//没有实现
  createTool();
  createBrowser();
  createStatus();

  /*
   * 创建浏览器相关事件监听
   */
  runThread();
 }

 /*
  * 创建基本工具栏,不包括相关事件监听
  */
 private void createTool() {

  composite_tool = new Composite(shell_default, SWT.BORDER);
  // GridData()第一个参数是水平排列方式,第二个参数是垂直排列方式,第三个是水平抢占是否,第四个参数是垂直抢占是否
  GridData gd_composite = new GridData(SWT.FILL, SWT.CENTER, true, false);
  gd_composite.heightHint = 30;// 高度和宽度
  gd_composite.widthHint = 549;
  composite_tool.setLayoutData(gd_composite);
  GridLayout fl_composite = new GridLayout();
  fl_composite.numColumns = 8;
  composite_tool.setLayout(fl_composite);

  button_back = new Button(composite_tool, SWT.NONE);
  button_back.setLayoutData(new GridData(27, SWT.DEFAULT));// 设置大小和格式
  button_back.setText("<-");

  button_forward = new Button(composite_tool, SWT.NONE);
  button_forward.setLayoutData(new GridData(24, SWT.DEFAULT));
  button_forward.setText("->");
  
  combo_address = new Combo(composite_tool, SWT.BORDER);
  final GridData gd_combo_3 = new GridData(SWT.FILL, SWT.LEFT, true,
    false);// 在窗口变化时,自动扩展水平方向的大小
  gd_combo_3.widthHint = 300;// 起始宽度
  gd_combo_3.minimumWidth = 50;// 设置最小宽度
  combo_address.setLayoutData(gd_combo_3);

  button_go = new Button(composite_tool, SWT.NONE);
  button_go.setLayoutData(new GridData(25, SWT.DEFAULT));
  button_go.setText("go");

  button_stop = new Button(composite_tool, SWT.NONE);
  button_stop.setLayoutData(new GridData(24, SWT.DEFAULT));
  button_stop.setText("stop");

  final Label label = new Label(composite_tool, SWT.SEPARATOR
    | SWT.VERTICAL);
  label.setLayoutData(new GridData(2, 17));

 }

 /*
  * 创建浏览器,不包括相关事件监听
  */
 private void createBrowser() {
  composite_browser = new Composite(shell_default, SWT.NONE);
  final GridData gd_composite = new GridData(SWT.FILL, SWT.FILL, true,
    true);// 充满窗口,且水平和垂直方向随窗口而变
  gd_composite.heightHint = 273;
  composite_browser.setLayoutData(gd_composite);
  GridLayout gl_composite = new GridLayout();
  gl_composite.marginHeight = 0;// 使组件上下方向容器
  gl_composite.marginWidth = 0;// 使组件左右方向占满容器
  composite_browser.setLayout(gl_composite);

  tabFolder = new TabFolder(composite_browser, SWT.NONE);
  final GridData gd_tabFolder = new GridData(SWT.FILL, SWT.FILL, true,
    true);
  gd_tabFolder.heightHint = 312;
  gd_tabFolder.widthHint = 585;
  tabFolder.setLayoutData(gd_tabFolder);  
  
  /*
   * 为标签添加右键功能
   */
  tabFolder.addMouseListener(new MouseAdapter(){
   @Override
   public void mouseUp(MouseEvent e) {
    if(e.button==3){//右键
     Menu menu_itemRightMouse=new Menu(shell_default,SWT.POP_UP);
     tabFolder.setMenu(menu_itemRightMouse);
     MenuItem menuItem_itemClose=new MenuItem(menu_itemRightMouse,SWT.NONE);
     menuItem_itemClose.setText("关闭当前标签");
     menuItem_itemClose.addSelectionListener(new SelectionAdapter(){
      @Override
      public void widgetSelected(SelectionEvent e) {
       if(tabFolder.getItemCount()!=1){//不是只存在一个标签的情况下
        browser_now.dispose();
        tabItem_now.dispose();
        tabFolder.redraw();
       }else{//只有一个标签
        browser_now.setUrl(":blank");
        browser_now.setText("");
       }
      }
     });
     MenuItem menuItem_itemCloseAll=new MenuItem(menu_itemRightMouse,SWT.NONE);
     menuItem_itemCloseAll.setText("关闭所有标签");
     menuItem_itemCloseAll.addSelectionListener(new SelectionAdapter(){
      @Override
      public void widgetSelected(SelectionEvent e) {
       shell_default.close();
      }
     });
    }
   }
  });
    

  final TabItem tabItem_default = new TabItem(tabFolder, SWT.NONE);
  browser_default = new Browser(tabFolder, SWT.NONE);
  tabItem_default.setControl(browser_default);
  browser_default.setUrl(homePage);// 显示浏览器首页
  
  
  /*
   * 把初始化的标签置顶,选中
   */
  tabFolder.setSelection(tabItem_default);

 }

 /*
  * 创建浏览器底部状态栏,不包括相关事件监听
  */
 private void createStatus() {
  composite_status = new Composite(shell_default, SWT.NONE);
  final GridData gd_composite = new GridData(SWT.FILL, SWT.FILL, true,
    false);// 参数true使状态栏可以自动水平伸缩
  gd_composite.heightHint = 20;
  gd_composite.widthHint = 367;
  composite_status.setLayoutData(gd_composite);
  GridLayout gl_composite = new GridLayout();
  gl_composite.numColumns = 2;
  gl_composite.marginBottom = 5;
  composite_status.setLayout(gl_composite);

  label_status = new Label(composite_status, SWT.NONE);
  GridData gd_status = new GridData(SWT.FILL, SWT.CENTER, true, false);
  gd_status.heightHint = 13;
  gd_status.widthHint = 525;
  label_status.setLayoutData(gd_status);

  progressBar_status = new ProgressBar(composite_status, SWT.BORDER
    | SWT.SMOOTH);
  progressBar_status.setLayoutData(new GridData(80, 12));
  progressBar_status.setVisible(false);// 打开过程初始不可见

 }

 private void runThread( ) {
  
  /*
   * 浏览器新标签前进、后退按钮的默认可用性为不可用
   */
  button_back.setEnabled(false);
  button_forward.setEnabled(false);
  
  /*
   * 获取浏览器的当前标签和功能Browser
   */
  tabItem_now=tabFolder.getItem(tabFolder.getSelectionIndex());
  browser_now=(Browser) tabItem_now.getControl();
   
  /*
   * 选中事件发生时,修改当前浏览器标签
   */
  tabFolder.addSelectionListener(new SelectionAdapter(){
   @Override
   public void widgetSelected(SelectionEvent e) {
    TabItem temp=(TabItem) e.item;
    if(temp!=tabItem_now){//防止重选一个标签,预防多次触发相同事件
     tabItem_now=temp;
     browser_now=(Browser)tabItem_now.getControl();
     //System.out.println("当前标签被修改了");//调试语句
     
     /*
      * 在相应的标签中,前进、后退按钮可用性是不一样的
      */
     if(browser_now.isBackEnabled()){//后退按钮的可用性
      button_back.setEnabled(true);
     }else{
      button_back.setEnabled(false);
     }
     if(browser_now.isForwardEnabled()){//前进按钮的可用性
      button_forward.setEnabled(true);
     }else{
      button_forward.setEnabled(false);
     }
      
    }
   }
  }); 
  
  /*
   * 添加浏览器的后退、向前、前进、停止按钮事件监听
   */
  button_back.addSelectionListener(new SelectionAdapter() {
   @Override
   public void widgetSelected(SelectionEvent arg0) {
    if (browser_now.isBackEnabled()){//本次可后退
     browser_now.back();
     button_forward.setEnabled(true);//下次可前进,前进按钮可用
     //System.out.println("可后退");//调试语句
    }
    if(!browser_now.isBackEnabled()){//下次不可后退,后退按钮不可用
     button_back.setEnabled(false);
    }
   }
  });

  button_forward.addSelectionListener(new SelectionAdapter() {
   @Override
   public void widgetSelected(SelectionEvent arg0) {
    if (browser_now.isForwardEnabled()){//本次可前进
     browser_now.forward();
     button_back.setEnabled(true);//后退按钮可用
     //System.out.println("可向前");//调试语句
    }
    if(!browser_now.isForwardEnabled()){//下次不可前进,前进按钮不可用
     button_forward.setEnabled(false);     
    }
   }
  });

  button_stop.addSelectionListener(new SelectionAdapter() {
   @Override
   public void widgetSelected(SelectionEvent arg0) {
    browser_now.stop();
   }
  });
  
  combo_address.addKeyListener(new KeyAdapter() {// 手动输入地址栏后,按回车键转到相应网址
   @Override
   public void keyReleased(KeyEvent e) {
    if (e.keyCode == SWT.CR) {//回车键触发事件
     browser_now.setUrl(combo_address.getText());
    }
   }
  });

  /*
   * 1>在addOpenWindowListener()下的open()写入e.browser = browser_new情况下,导入新的超级链接,
   * 只有当点击页面上的链接,且链接不在新的页面打开时才会发生.
   * 2>在addOpenWindowListener()下的open()不写入e.browser = browser_new情况下,导入新的超级链接,
   * 只有当点击页面上的链接,且链接在新的页面打开时才会发生.
   * 除了以上两种外,当然还包括browser.back()、browser.forward()、browser.go()、browser.setUrl()发生时触发,
   * 但changing()在不写入e.browser = browser_new情况下,不被browser.setUrl()触发
   */
  browser_now.addLocationListener(new LocationAdapter() {
   @Override
   public void changing(LocationEvent e) {// 表示超级链接地址改变了
    if(openNewItem==false){//新的页面在同一标签中打开
     button_back.setEnabled(true);//后退按钮可用,此句是后退按钮可用判定的逻辑开始点
    }
    //System.out.println("location_changing");// 调试语句
   }

   @Override
   public void changed(LocationEvent e) {// 找到了页面链接地址
    combo_address.setText(e.location);// 改变链接地址显示
    /*
     * 新的页面已经打开,browser的LocationListener已经监听完毕,openNewItem回复默认值
     */
    if(openNewItem==true){
     openNewItem=false;
    }
    //System.out.println("location_changed");// 调试语句
    
   }

  });

  /*
   *  新的超级链接页面的导入的百分比,在导入新的页面时发生,此时链接地址已知
   */
  browser_now.addProgressListener(new ProgressAdapter() {
   @Override
   public void changed(ProgressEvent e) {//本事件不断发生于页面的导入过程中
    progressBar_status.setMaximum(e.total);// e.total表示从最开始页面到最终页面的数值
    progressBar_status.setSelection(e.current);
    if (e.current != e.total) {//页面还没完全导入
     loadCompleted = false;
     progressBar_status.setVisible(true);// 页面的导入情况栏可见
    } else {
     loadCompleted = true;
     progressBar_status.setVisible(false);// 页面导入情况栏不可见
    }
    //System.out.println("progress_changed");//调试语句

   }

   @Override
   public void completed(ProgressEvent arg0) {//发生在一次导入页面时,本监听器changed事件最后一次发生之前
    //System.out.println("progress_completed");//调试语句
   }
  });

  /*
   *  获取页面内容过程,文字显示addProgressListener()过程,同时还能检测到已打开页面的存在的超级链接,就是用给功能来获取
   *  新的链接地址的
   */
  browser_now.addStatusTextListener(new StatusTextListener() {
   public void changed(StatusTextEvent e) {
    if (loadCompleted == false) {
     label_status.setText(e.text);
    } else {
     newUrl = e.text;//页面导入完成,捕捉页面上可能打开的链接
    }
    //System.out.println("statusText_changed");//调试语句
   }
  });

  /*
   * 显示页面的提示语句,在新的页面导入时发生
   */
  browser_now.addTitleListener(new TitleListener() {
   public void changed(TitleEvent e) {
    shell_default.setText(e.title);
    if (e.title.length() > 3) {//显示当前页面提示字符在标签上
     tabItem_now.setText(e.title.substring(0, 3) + "..");
    } else {
     tabItem_now.setText(e.title);
    }
    tabItem_now.setToolTipText(e.title);//标签显示提示符
   }
  });

  /*
   * 打开新的页面,当前打开页面新的链接需要在新的窗口页面打开时发生.addOpenWindowListener下open()中的一句
   * e.browser = browser_new;关键部分.联系addOpenWindowListener、addVisibilityWindowListener
   * 和addDisposeListener的值传递枢纽
   */
  browser_now.addOpenWindowListener(new OpenWindowListener() {// 在当前页面中打开点击的链接页面
     public void open(WindowEvent e) {
      Browser browser_new = new Browser(tabFolder, SWT.NONE);
      TabItem tabItem_new = new TabItem(tabFolder, SWT.NONE);
      tabItem_new.setControl(browser_new);
      tabFolder.setSelection(tabItem_new);//新打开的页面标签置顶
      tabFolder.redraw();//刷新容器
      browser_new.setUrl(newUrl);//新标签中设置新的链接地址
      openNewItem=true;//新的页面在新的标签中打开
   
      /*
       * 关键部分,告知新的页面由browser_new打开,只要实现这句就不会弹出操作系统默认的浏览器了
       */
      e.browser = browser_new;
      //System.out.println("OpenWindowListener_open");//调试语句
      
      /*
       * 为浏览器新的标签添加事件监听
       */
      display.syncExec(new Runnable(){
       public void run() {
        runThread(); 
       }
      });
           
      
     }
    });
  
  /*
   * 浏览器关闭事件,关闭当前功能浏览器,不然的话浏览器主窗口关闭了,还有进程在运行
   */
  browser_now.addCloseWindowListener(new CloseWindowListener(){
   public void close(WindowEvent e) {
    browser_now.dispose();
   }
  });

 }
}

 

java swing 简易浏览器(其三)下载器,智能搜索栏与邮件发送 目录前言实现思路下载器智能搜索栏邮件发送代码实现下载器智能搜索栏邮件发送完整代码MyHtmlBrowser.javaMultiThreadDownloader.javaEmailSender.java演示 前言 大作业继续。 之前的内容 【Java swing简易浏览器(其一)页面显示,超链接跳转与手动输入URL跳转】 【Java swing简易浏览器(其二)前进后退与收藏夹实现】 今天来实现最后几个功能。 实现思路 这里只介绍实现思路,代码的改动在【代码实现】部分 下载器 之前做了准备,我们使用之前写好的 阅读详情

相关推荐

swing酒店管理系统源码

swing酒店管理系统源码 java swing 酒店管理系统源码 swing酒店管理系统源码 java swing 酒店管理系统源码 swing酒店管理系统源码 java swing 酒店管理系统源码

java SWT Browser实现浏览器功能并运行JavaScript代码

搜了好多中文教程,要么时间太久,要么太过于简略,没有干货。迫于无奈,硬着头皮去看官方源文档。还是有一点的收获。分享一下。 swt用于图形界面开发,关于他的初级介绍,建议去IBM的网站https://www.ibm.com/developerworks/cn/opensource/os-jface1/#artrelatedtopics,这个是一个简单的介绍。要想详细的了解,直接去eclipse官网...

explorer9607的博客 9913

java swing 内嵌浏览器

做java客户端时,为了显示更好的显示效果,可以用内嵌浏览器,此包里有相关例子和jar包,api等!

java浏览器代码_Java实现内嵌浏览器

packagebrowserTest;/*** Java内嵌浏览器*@authorWangSong*/importorg.eclipse.swt.SWT;importorg.eclipse.swt.browser.Browser;importorg.eclipse.swt.browser.CloseWindowListener;importorg.eclipse.swt.browser.Locat...

weixin_35445090的博客 933

Java-Swing嵌入浏览器(本地浏览器和webkit浏览器-火狐内核)

用DJnative-swt和swt包开发的调用本地浏览器和webkit浏览器的示例

基于PyQt的简易网页浏览器实现源码.zip

基于PyQt的简易网页浏览器实现源码.zip

java swt实现浏览器_[转载]自写  java 浏览器(swt源码)

package three;import org.eclipse.swt.SWT;import org.eclipse.swt.browser.*;import org.eclipse.swt.events.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*;public class Liulanqi {//基于标签...

weixin_29860267的博客 452

基于Java的Swing图形界面设计源码

本设计源码提供了一个基于Java的Swing图形界面。项目包含59个文件,主要使用Java编程语言。文件类型包括30个Java字节码文件、21个Java源代码文件、4个XML配置文件、3个Idea项目文件、1个GIT忽略文件。该项目是一个基于Java的Swing图形界面,适合用于学习和实践Java技术,以及开发基于Java的Swing图形界面相关的系统。

java iwebbrowser,java swing开发最简单的浏览器源代码下载

/** Test1.java** Created on 2007-10-2, 17:29:30** To change this template, choose Tools | Templates* and open the template in the editor.*/import java.awt.BorderLayout;import java.awt.event.ActionEven...

weixin_34741145的博客 145

javaswing图书管理系统源码+数据库文件+视频教程

javaswing图书管理系统源码+数据库文件+视频教程 jdk1.7或者1.8都可以 mysql5.7 navicat:mysql管理工具。

Creo报许可证错误License request failed for feature的解决方案

有些朋友用了一段时间打开creo软件,出现icense request failed for feature”错误,这个是Creo许可证出现了问题,一般是许可证文件无效或是已过期,导致Creo软件通信出现故障,就会出现Creo License request failed for feature, Requsesting CreoPMA_SSQ ,Run ptcstatus.bat server status。第三步:键盘按win+R,在运行窗口里输入:cmd,然后点确定。第八步:点击系统,找到系统信息。

Q82556499的博客 3万+

java swing开发短小精悍的俄罗斯方块小游戏源代码下载,仅300行代码

java swing开发短小精悍的俄罗斯方块小游戏源代码下载,仅300行代码 源代码下载地址:http://www.zuidaima.com/share/1550463495146496.htm

springmvc_springdata的专栏 2454

ROS下UR+Realsense相机进行手眼标定

手眼标定主要是用来确定相机坐标系和机械臂坐标系之间的转换关系,从而实现后续的抓取等任务。

weixin_42157689的博客 7575

java swing编写俄罗斯方块小游戏源代码下载

原文:java swing编写俄罗斯方块小游戏源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463301618688.htm

springmvc_springdata的专栏 2184

半导体设备上位机开发:我的经验与新人指导

半导体设备上位机开发是一项复杂而富有挑战性的工作,需要扎实的技术基础和丰富的经验。如果你对半导体设备上位机开发感兴趣,欢迎随时与我交流,我会尽力帮助你!

qq_43518667的博客 2735

Delft3D从入门到实践:安装、编译与首次模拟指南

本文为Delft3D初学者提供了一份详尽的从零开始指南。内容涵盖软件获取、许可证申请、图形界面安装、核心计算内核的编译环境搭建与编译步骤,以及最终整合运行首个水动力模拟的全流程。重点解决了Windows系统下Delft3D安装与编译的常见问题,帮助用户快速上手这一开源水动力与泥沙输运模拟工具。

weixin_29303701的博客 542

java swing开发单机版五子棋源代码下载

java swing开发单机版五子棋源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463383030784.htm

springmvc_springdata的专栏 2438

清华数据结构列车调度AC100分

两种思路(1)将目标栈的数据和待混洗的数据逐个进行比较#pragma warning(disable:4996) #include&lt;stdio.h&gt; #include&lt;string.h&gt; #define maxn 1600005 using namespace std; char a[2*maxn][5];//记录操作命令 int stack[maxn]; char pop...

hgtjcxy的博客 925

【java】本地客户端内嵌浏览器1 - Swing、SWT、DJNativeSwing、javaFX

java客户端内嵌谷歌chrome浏览器,chromium开源项目CEF的java语言移植版jcef项目,给swing项目搭建spring框架,spring注解开发,spring启动,spring多线程异步开发,@Async的使用,内嵌浏览器防卡顿,打包带dll的Java项目,jar包转exe,exe4j使用Regular mode模式

苍狼的博客 9697

jdbc从入门到精通(全)

前言 Java语言连接数据库(Java DataBase Connectivity) 面向接口/抽象编程(降低程序的耦合度,提高程序的扩展力)类似多态机制

码农研究僧的博客 1759

uniapp - 实现手机端H5网页直播功能效果,拿到后端推流地址或播放资源后进行前端的流畅播放和画面展示功能,uniapp实时推流/拉流直播系统详细教程(提供完整示例代码,一键复制开箱即用!)

uniapp,h5网页,手机端H5网页,uniapp h5直播功能页面,uniapp直播实时推送显示,uniapp h5直播怎么做,怎么使用uniapp去实现移动端手机H5直播,h5 vue+uniapp怎么做直播,uniapp中使用videojs构建H5直播播放器,uniappH5端怎么实现直播推流,uniapp如何实现直播,直播聊天功能,h5平台端直播用什么插件,uniapp手机网页直播用什么组件插件播放器,uniapp手机H5直播播放器详细教程,直播项目,怎么使用vue+uniapp怎么做H5实时直播

✅ 精选推荐文章 8794

java swing开发扫雷游戏源代码

java swing开发扫雷游戏源代码 源代码下载地址:http://www.zuidaima.com/share/1550463547886592.htm

springmvc_springdata的专栏 1859

芒果YOLOv7改进04:Loss篇:原创改进损失函数Repulsion:独家首发最新改进Repulsion Loss解决目标遮挡场景下检测,为解决密集人群检测中遮挡设计的损失函数,打造高效检测器涨点

YOLOv7原创改进Repulsion|首发最新改进为解决密集人群检测中遮挡设计的损失函数

包括YOLOv5、YOLOv7、YOLOv8等模型改进 3254

java使用swing实现内嵌浏览器

java使用swing实现内嵌浏览器 1.使用swing内嵌浏览器需要导入3个jar包,第3个根据电脑版本选择 dj-native-swing-swt.jar dj-native-swing.jar org.eclipse.swt.win32.win32.x86_64-4.3.jar 下载链接:https://pan.baidu.com/s/1zZ-BfP4Lghyrc...

皓亮君的博客 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JAVA Swing 全教程下载仓库

JAVA Swing 全教程下载仓库 【下载地址】JAVASwing全教程下载仓库 探索JAVA Swing的无限可能!本教程为您呈现一套全面且深入的JAVA Swing图形用户界面开发指南。Swing作为JAVA库中的瑰宝,拥有超过250个类,提供40多个丰富的组件,远超AWT。从基础组件到高级特性,本教程涵盖事件处理...

gitblog_06793的博客 1004

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java swing开发单机版五子棋源代码下载,休闲娱乐

java swing开发单机版五子棋源代码下载,休闲娱乐 java源代码下载地址:http://www.zuidaima.com/share/1550463383784448.htm

springmvc_springdata的专栏 1994

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 【demo】自己写的一个 SpringMail 异步发送邮件的demo。 javamail 邮件异步发送
下一篇: jsp开发无刷新文件上传程序代码
springmvc_springdata
博客等级 码龄12年 197粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值