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文件,就是能访问手机站点,求指点!






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值