这是很早之前下的代码,源代码来着网络,但忘记在哪下的了,在此感谢原作者。本人对源代码进行了整理和删除。目前实现的功能是:能访问网页,有状态栏的显示,能打开html文件。但是对html界面支持不好。

代码如下:Browser.java

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JViewport;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLFrameHyperlinkEvent;/*** Java简化版浏览器。也可以打开html文件**/
public class Browser extends JFrame implements ActionListener {private Container contentPane;// 文本框private JTextField addressTex;private JLabel statusLbl;// 初始化滚动条private JScrollPane centerPane;// 编辑显示区域private JEditorPane textArea;private JMenuBar munubar;private JButton btgoto, btback;private JMenu filemenu;// 菜单项private JMenuItem itemopen, itemquit;public Browser() {super("Java 简化版浏览器");setBounds(120, 80, 750, 500);setDefaultCloseOperation(this.EXIT_ON_CLOSE);contentPane = this.getContentPane();// 初始化菜单栏munubar = new JMenuBar();setJMenuBar(munubar);// 初始化菜单filemenu = new JMenu("文件");// 将菜单加入菜单栏munubar.add(filemenu);// 初始化菜单项itemopen = new JMenuItem("打开");itemopen.addActionListener(this);itemquit = new JMenuItem("关闭");itemquit.addActionListener(this);// 将菜单项加入到file菜单filemenu.add(itemopen);filemenu.add(itemquit);contentPane.setLayout(new BorderLayout());// 地址栏addressTex = new JTextField(40);     btgoto = new JButton("转到");btgoto.addActionListener(this);btback = new JButton("返回");btback.addActionListener(this);JPanel toolpanel = new JPanel();// 设置颜色toolpanel.setBackground(Color.pink);toolpanel.setLayout(new FlowLayout());toolpanel.add(btback);toolpanel.add(addressTex);toolpanel.add(btgoto);contentPane.add(toolpanel, BorderLayout.NORTH);// 状态栏statusLbl = new JLabel("status: ");contentPane.add(statusLbl, BorderLayout.SOUTH);// 浏览器体部centerPane = new JScrollPane();// 显示区域JViewport view = centerPane.getViewport();// 内容显示textArea = new JEditorPane();// 监听超链接,使其生效textArea.addHyperlinkListener(new HyperlinkListener() {public void hyperlinkUpdate(HyperlinkEvent e) {if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {JEditorPane pane = (JEditorPane) e.getSource();statusLbl.setText(e.getURL().toString());if (e instanceof HTMLFrameHyperlinkEvent) {HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent) e;HTMLDocument doc = (HTMLDocument) pane.getDocument();doc.processHTMLFrameHyperlinkEvent(evt);} else {try {pane.setPage(e.getURL());} catch (Throwable t) {t.printStackTrace();}}}}});addressTex.setText("http://www.baidu.com/");// 设置不可写操作textArea.setEditable(false);view.add(textArea);contentPane.add(centerPane);}public void actionPerformed(ActionEvent e) {//“转到”操作if (e.getSource() == btgoto) {String address = addressTex.getText().trim();statusLbl.setText(address);try {if (addressTex.getText().length() > 0&& (addressTex.getText().startsWith("http://"))||addressTex.getText().startsWith("file:"))textArea.setPage(address);else if (addressTex.getText().length() > 0&& !addressTex.getText().startsWith("http://")) {String newURL = "";newURL = "http://" + addressTex.getText();URL newurl = new URL(newURL);addressTex.setText(newURL);textArea.setPage(newurl);}} catch (IOException e1) {e1.printStackTrace();}}// end btgoto//“返回”操作if (e.getSource() == btback) {String address = addressTex.getText().trim();try {if (addressTex.getText().length() > 0&& addressTex.getText().startsWith("http://"))textArea.setPage(address);else if (addressTex.getText().length() > 0&& !addressTex.getText().startsWith("http://")) {String newURL = "";newURL = "http://" + addressTex.getText();// 加http:textArea.setPage(newURL);}} catch (IOException e1) {e1.printStackTrace();}}// end btback//“打开”操作if(e.getSource()==itemopen){FileDialog fd = new FileDialog(new JFrame(), "Open a file",FileDialog.LOAD);fd.setVisible(true);String name = fd.getFile();            try {URL url = new URL("file" + ":///" + fd.getDirectory() + name);addressTex.setText(url.toString());} catch (Exception e1) {JOptionPane.showMessageDialog(null, "打开失败!", "openopen打开文件",JOptionPane.ERROR_MESSAGE);}}//end itemopen//“退出”操作if(e.getSource()==itemquit){System.exit(0);}//end itemquit}//end actionPerformedpublic static void main(String[] args) {Browser bro = new Browser();bro.setVisible(true);}
}

PS:本人想写个Java浏览器解析wml文件,就是能访问手机站点,求指点!

Java版浏览器源代码(可以打开html文件)下载相关推荐

  1. java 打开指定文件,java解决指定应用程序打开指定文件

    java解决指定应用程序打开指定文件 //打开工具的路径及名字 String toolsPath = "D:/office/Office12/WINWORD.EXE"; //被打开 ...

  2. 分享链接在微信内置浏览器中无法打开也无法下载怎么办(Mindjump实现自动跳转浏览器)

    现如今有时候分享链接在微信内置浏览器中无法打开也无法下载,而且转发的话经常会被拦截,一旦被拦截用户在微信中识别二维码就会提示"已停止访问该网页",如此一来对外分享的二维码基本就作废 ...

  3. xp系统网页java不显示,xp系统打开jsp文件的两种方法

    使用xp系统的时候会碰到各种文件,比如png.log.exe等等,一位用户说遇到后缀名是jsp的文件,jsp文件是什么?有什么作用呢?jsp格式文件是一种动态网页技术标准,是用java script脚 ...

  4. 微信内置浏览器不支持打开网页或下载APP怎么办,微信跳转浏览器原理

    分析 由于微信引流具备快速性和高效的二次传播性,故众多商家纷纷选择微信推广为主要的推广方式.但在使用微信分享链接和营销方案的过程中经常会遇到分享链接在微信内被拦截从而无法打开或者打开后无法下载文件 的 ...

  5. 关于pdf文件直接在chrome浏览器中直接打开而不是下载的问题

    这个原因就是:打开chrome的设置 => 高级 => 内容设置 => pdf => 就是这个东西,.搞得我好长时间不知道怎么回事...阿西吧!!据我所知,火狐也有这种问题.. ...

  6. 贪吃蛇游戏项目(Java版含源代码)

    这是一款经典小游戏,贪吃蛇,玩家操控小蛇从小吃到大,全方面的代码解析,适合新手第一款的项目实战 更多项目

  7. 我的世界神秘时代安卓java版_我的世界神秘时代下载

    本文中kk下载为大家带来的[我的世界神秘时代]MOD(ThaumCraft)是神秘的三大远古mod, 是一个魔法类的MOD,该MOD 的主要内容是:从物体中获得灵力(Vis),构建魔法,并引发奇迹.这 ...

  8. 诺基亚3d贪吃蛇java版_诺基亚3D贪吃蛇游戏下载-游戏大玩家

    <诺基亚3D贪吃蛇>是一款非常魔性有趣的贪吃蛇小游戏,游戏把传统的贪吃蛇界面进行了改进,创造出一个全新的3D炫彩界面,看着爱吃豆豆的贪图蛇行走在立体空间,摇晃着它圆滚滚的身体,超级搞笑有意 ...

  9. MC仿JAVA版背包界面_Minecraft背包编辑器mod下载大全(1.5.2-1.7.10)

    详细介绍: All--U--Want 让新手们更好地了解一下这个Mod的神奇之处 Mod功能 可以设置某物品无限耐久 调节某物品攻击力 调节物品附魔属性,级别不限 附魔书的修改 药水效果设置 头颅制作 ...

最新文章

  1. 【Java 语言】Java 多线程 一 ( 线程基础 : 线程启动 | 线程停止 | 线程暂停 | 线程优先级 | 守护线程)
  2. linux部署vue项目_Vue项目部署的最佳实践
  3. Java语言学校的危险性(译文)
  4. 前端处理跨域的几种方式
  5. CF1253E Antenna Coverage
  6. mysql函数使用场景_mysql的函数和存储过程的比较,以及在实际场景中的使用案例...
  7. java猜拳游戏代码_猜拳游戏 - java代码库 - 云代码
  8. oracle存储过程导出查询结果,ORACLE如何实现函数、包、存储过程的导入和导出
  9. 计算机一级学科评选,我系力学被评选为一级学科国家重点学科
  10. 使用python,爆破加密的rar压缩文件
  11. 产品管理:四步法新产品开发流程
  12. js距离单位换算_1等于多少公里
  13. wordpress 企业 主题 html5,Maxx 漂亮简洁的企业 WordPress主题
  14. 使用viewer实现图片预览
  15. 有翅膀的java游戏_翅膀只是为了拉风?在这几款游戏中,带上翅膀真的能飞
  16. 关于Base64编码(Encode)与解码(Decode)的几种方式,这里面有道道
  17. mysql主从同步延迟优化大全
  18. 笔记—R语言做相关气泡图
  19. 如何消除win10文件右上角的蓝色箭头
  20. 大工14春 计算机文化基础 在线测试,大工14春《计算机文化基础》在线测试1

热门文章

  1. echarts 百万数据_GitHub - AricZhu/echarts-billion-data-disp: 针对 echarts 百万数据的折线图优化...
  2. 学习笔记8--智能驾驶的功能安全设计之功能安全与ISO 26262标准
  3. ava web 开发过程中常见的一些错误
  4. String index out of range: -824264796 不明的原因导致驱动程序造成失败,请回报这个例外。
  5. 神经网络与卷积神经网络,神经网络层数的确定
  6. 关于使用深度学习进行三维点云几何压缩
  7. 电子货架标签----智能仓库管理
  8. 2009-12-20 EXCEL比对数据
  9. Fortify SCA C#.NET 扫描方法(Visual Studio插件)
  10. PythonThinking_FOR、IF以及while