「java封装浏览器」关于java封装

博主:adminadmin 2023-01-11 09:12:12 968

本篇文章给大家谈谈java封装浏览器,以及关于java封装对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎样用Java制作一个简单浏览器解决方法

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import java.io.*;

import javax.swing.event.*;

@SuppressWarnings("serial")

class Win3 extends JFrame implements ActionListener,Runnable

{  

   JButton button;

   URL url;

   JTextField text;

   JEditorPane editPane; 

   byte b[]=new byte[118];

   Thread thread;

   public Win3()

   {  

      text=new JTextField(20);

      editPane=new JEditorPane();

      editPane.setEditable(false);

      button=new JButton("确定");

      button.addActionListener(this);

      thread=new Thread(this);

      JPanel p=new JPanel();

      p.add(new JLabel("输入网址:"));

      p.add(text); 

      p.add(button);

      Container con=getContentPane();

      con.add(new JScrollPane(editPane),BorderLayout.CENTER);

      con.add(p,BorderLayout.NORTH);

      setBounds(60,60,400,300);

      setVisible(true);

      validate();

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      editPane.addHyperlinkListener(new HyperlinkListener()

                                         {

                                           public void hyperlinkUpdate(HyperlinkEvent e) 

                                            { 

                                              if(e.getEventType()==

                                                HyperlinkEvent.EventType.ACTIVATED)

                                                { 

                                                  try{

                                                       editPane.setPage(e.getURL());

                                                     }     

                                                  catch(IOException e1)

                                                     {

                                                        editPane.setText(""+e1);

                                                     }

                                                 }

                                            } 

                                         }

                                     );

   }

   public void actionPerformed(ActionEvent e)

   { 

      if(!(thread.isAlive())) 

         thread=new Thread(this);

      try{

           thread.start();

         }

      catch(Exception ee)

         {

            text.setText("我正在读取"+url);

         }

   }

  public void run()

   {

       try {    

                 int n=-1;

                 editPane.setText(null);

                 url=new URL(text.getText().trim());

                 editPane.setPage(url);

            }

          catch(MalformedURLException e1)

           {  

                 text.setText(""+e1);

                 return;

           }

          catch(IOException e1)

           {  

                 text.setText(""+e1);

                 return;

           }  

   }

}

public class Example3

    public static void main(String args[])

    { 

       new Win3();

    }

}

如何编译JCEF以及内嵌到桌面应用程序中

在项目中需要在桌面应用程序中内嵌浏览器, 尝试了几种解决方案,有:javafx, DJNativeSwing,CEF等。觉得CEF效果最好。本文目的是介绍如何编译和使用jCEF。

主要参考和翻译了这篇文章java-cef

背景说明

什么是CEF?

CEF是Chromium Embedded Framework的缩写,是个基于Google Chromium项目的开源Web browser控件,支持Windows, Linux, Max平台。除了提供C/C++接口外,也有其他语言的移植版。比如JCEF。

因为基于Chromium,所以CEF支持Webkit Chrome中实现的HTML5的特性,并且在性能上面,也比较接近Chrome。

谁在用CEF?

各种浏览器

早期的双核浏览器(IE + Webkit),有些使用了CEF来作为Webkit内核浏览器控件。

不过对于浏览器来说,直接在Chrome上面扩展,其实才是王道,大家现在都这么做了(各种极速浏览器)。

Evernote Client (on Windows)

Evernote允许用户将网页粘贴到笔记中,还提供了插件用来将网页保存为笔记。

那肯定是需要在Client上面可以正确的渲染页面咯,这个任务就交给了CEF。

GitHub Client (on Windows)

GitHub也打包了libCEF.dll,从表现上面看,用来展示项目的ReadMe页面的,肯定是CEF,其他地方的UI,可能部分也是用页面来实现的。

QQ

QQ很早之前就通过内嵌IE来实现一些功能和界面。从2013年开始,QQ引入了CEF,对一些之前用IE的地方进行了替换,这样就可以使用一些基于Webkit的新特性,同时也获得了速度、稳定性、兼容性方面的优势。

什么是JCEF?

简单来说,JCEF是对CEF进行了一层Java封装。使用JNI调用CEF的功能。目标是让java开发者能够使用CEF框架来开发web browser控件。

如编译和使用JCEF?

目前JCEF保持了一个开发分支对CEF进行跟进,在不断的develop中。我们可以下载JCEF源码按照下面的步骤手动编译。

1. 准备环境

需要编译JCEF需要你的电脑上有如下的开发环境:

CMake version 2.8.12.2 or newer.

Git.

Java version 1.7 or newer.

Python version 2.6 or newer.

对于linux系统,下面几个发行版是支持的:

Debian Wheezy, Ubuntu Precise, and related.

对于windows系统:

因为JCEF的开发者用Visual Studio 2013 作为开发工具,所以你得准备一个VS2013 来编译JCEF,否则用其他的编译器可能会出问题。

对于MAC系统:

需要Apache Ant

2. 下载JCEF源码

使用git下载JCEF源码:

#The JCEF source code will exist at `/path/to/java-cef/src`

cd /path/to/java-cef

java prsim, javaFX,SDk是什么关系,三者又什么联系

Mozilla的Prism,不是java的,用来封装浏览器应用,做桌面应用,类似chm、类似adobe AIR

JavaFX是java新增的界面媒体组件,早期1.x版是为了和flash竞争,2.x重生整合进java本身,成为java界面的主要组件,会取代现有的Swing。

SDK,指任何软件的应用开发包,比如你做了个计算器,为了让别人能“编程使用”你的计算器,你就要提供几个函数库给别人,这几个函数库就叫SDK。

谁会用Java编写一个浏览器,任何文件都可以浏览的!

会,但程序不是立刻可以编写出来的,但我觉得C++会有效率一点

用JAVA编写的一个简易浏览器。

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import java.io.*;

import javax.swing.*;

import javax.swing.text.DefaultStyledDocument;

//HTTP连接与浏览

public class HTTPBrowser extends JFrame{

JTextField jtfAddress; //输入html文件地址或网址

JTextPane jtpShow; //显示页面

JTextArea jtaSource; //显示HTML源文件

public HTTPBrowser(){

super("HTTP连接与浏览"); //调用父类构造函数

jtfAddress=new JTextField(30); //实例化地址输入框

jtpShow=new JTextPane(); //实例化显示内容框

jtaSource=new JTextArea();

JPanel p1=new JPanel(); //实例化面板

JSplitPane spane=new JSplitPane(JSplitPane.VERTICAL_SPLIT); //实例化分隔面板

p1.add(new JLabel("地址")); //增加组件到面板上

p1.add(jtfAddress);

spane.add(new JScrollPane(jtpShow),JSplitPane.TOP);

spane.add(new JScrollPane(jtaSource),JSplitPane.BOTTOM);

spane.setDividerLocation(130); //设置分隔位置

spane.setDividerSize(2); //设置分隔栏尺寸

Container container=getContentPane(); //得到容器

container.add(p1,BorderLayout.NORTH); //增加组件到容器上

container.add(spane,BorderLayout.CENTER);

jtfAddress.addActionListener(new ShowHTMLListener()); //输入地址文本域事件处理

setSize(380,300); //设置窗口尺寸

setVisible(true); //设置窗口可视

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序

}

class ShowHTMLListener implements ActionListener {

public void actionPerformed(ActionEvent event) {

try{

URL address=new URL(jtfAddress.getText()); //得到HTML页面的URL地址

jtpShow.setContentType("text/html"); //设置内容格式

jtpShow.setPage(address); //设置显示页面

BufferedReader in= new BufferedReader(new InputStreamReader(address.openStream())); //获取输入流

String line;

StringBuffer content = new StringBuffer(); //文件内容

while ((line = in.readLine()) != null) { //读取文件

content.append(line+"\n");

}

jtaSource.setText(new String(content)); //设置显示文本

in.close(); //关闭输入流

}

catch (Exception ex){

ex.printStackTrace(); //输出出错信息

}

}

}

public static void main(String[] args){

new HTTPBrowser();

}

}

这还有一个

import java.awt.*;

import java.awt.event.*;

import java.net.URL;

import javax.swing.*;

//html浏览器

public class HTTPBrowserDemo extends JFrame{

JTextField jtfAddress; //输入html文件地址或网址

JButton jbGo; //转到文件按钮

JTextPane jtpShow; //显示文件

JLabel jlInfo; //提示信息

public HTTPBrowserDemo(){

super("html浏览器"); //调用父类构造函数

jtfAddress=new JTextField(20); //实例化地址输入框

jbGo=new JButton("转到"); //实例化转向按钮

jtpShow=new JTextPane(); //实例化显示内容框

jlInfo=new JLabel(); //实例化信息提示标签

JPanel panel=new JPanel(); //实例化面板

panel.add(new JLabel("地址")); //增加组件到面板上

panel.add(jtfAddress);

panel.add(jbGo);

JScrollPane jsp=new JScrollPane(jtpShow); //实例化滚动窗体

Container container=getContentPane(); //得到容器

container.add(panel,BorderLayout.NORTH); //增加组件到容器上

container.add(jsp,BorderLayout.CENTER);

container.add(jlInfo,BorderLayout.SOUTH);

jbGo.addActionListener(new ShowHTMLListener()); //事件处理,发生按钮点击时显示页面内容

jtfAddress.addActionListener(new ShowHTMLListener());

setSize(350,280); //设置窗口尺寸

setVisible(true); //设置窗口可视

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序

}

class ShowHTMLListener implements ActionListener { //显示页面内容事件处理

public void actionPerformed(ActionEvent event) {

try{

jlInfo.setText("正在连接..."); //显示提示信息

URL address=new URL(jtfAddress.getText()); //得到HTML页面的URL地址

jtpShow.setPage(address); //设置显示页面

jlInfo.setText("完成");

}

catch (Exception ex){

jlInfo.setText("连接出错");

ex.printStackTrace(); //输出出错信息

}

}

}

public static void main(String[] args){

new HTTPBrowserDemo();

}

}

关于java封装浏览器和关于java封装的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。