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

   这是很早之前下的代码,源代码来着网络,但忘记在哪下的了,在此感谢原作者。本人对源代码进行了整理和删除。目前实现的功能是:能访问网页,有状态栏的显示,能打开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 actionPerformed
	
	
	public static void main(String[] args) {
		Browser bro = new Browser();
		bro.setVisible(true);
	}
}



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






  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值