「java封装浏览器」关于java封装
本篇文章给大家谈谈java封装浏览器,以及关于java封装对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、怎样用Java制作一个简单浏览器解决方法
- 2、如何编译JCEF以及内嵌到桌面应用程序中
- 3、java prsim, javaFX,SDk是什么关系,三者又什么联系
- 4、谁会用Java编写一个浏览器,任何文件都可以浏览的!
- 5、用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很早之前就通过内嵌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封装的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。