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

来源:互联网 发布:aaa软件教育学院 编辑:程序博客网 时间:2024/04/28 18:02

代码如下:Browser.java


[java] view plaincopyprint?
  1. import java.awt.BorderLayout;  
  2. import java.awt.Color;  
  3. import java.awt.Container;  
  4. import java.awt.FileDialog;  
  5. import java.awt.FlowLayout;  
  6. import java.awt.event.ActionEvent;  
  7. import java.awt.event.ActionListener;  
  8. import java.io.IOException;  
  9. import java.net.URL;  
  10. import javax.swing.JButton;  
  11. import javax.swing.JEditorPane;  
  12. import javax.swing.JFrame;  
  13. import javax.swing.JLabel;  
  14. import javax.swing.JMenu;  
  15. import javax.swing.JMenuBar;  
  16. import javax.swing.JMenuItem;  
  17. import javax.swing.JOptionPane;  
  18. import javax.swing.JPanel;  
  19. import javax.swing.JScrollPane;  
  20. import javax.swing.JTextField;  
  21. import javax.swing.JViewport;  
  22. import javax.swing.event.HyperlinkEvent;  
  23. import javax.swing.event.HyperlinkListener;  
  24. import javax.swing.text.html.HTMLDocument;  
  25. import javax.swing.text.html.HTMLFrameHyperlinkEvent;  
  26.   
  27. /** 
  28.  * Java简化版浏览器。也可以打开html文件 
  29.  * 
  30.  */  
  31. public class Browser extends JFrame implements ActionListener {  
  32.   
  33.     private Container contentPane;  
  34.     // 文本框  
  35.     private JTextField addressTex;  
  36.     private JLabel statusLbl;  
  37.     // 初始化滚动条  
  38.     private JScrollPane centerPane;  
  39.     // 编辑显示区域  
  40.     private JEditorPane textArea;  
  41.     private JMenuBar munubar;  
  42.   
  43.     private JButton btgoto, btback;  
  44.     private JMenu filemenu;  
  45.     // 菜单项  
  46.     private JMenuItem itemopen, itemquit;  
  47.   
  48.     public Browser() {  
  49.           
  50.         super("Java 简化版浏览器");  
  51.         setBounds(12080750500);  
  52.         setDefaultCloseOperation(this.EXIT_ON_CLOSE);  
  53.         contentPane = this.getContentPane();  
  54.           
  55.         // 初始化菜单栏  
  56.         munubar = new JMenuBar();  
  57.         setJMenuBar(munubar);  
  58.         // 初始化菜单  
  59.         filemenu = new JMenu("文件");  
  60.         // 将菜单加入菜单栏  
  61.         munubar.add(filemenu);  
  62.   
  63.         // 初始化菜单项  
  64.         itemopen = new JMenuItem("打开");  
  65.         itemopen.addActionListener(this);  
  66.         itemquit = new JMenuItem("关闭");  
  67.         itemquit.addActionListener(this);  
  68.         // 将菜单项加入到file菜单  
  69.         filemenu.add(itemopen);  
  70.         filemenu.add(itemquit);  
  71.   
  72.         contentPane.setLayout(new BorderLayout());  
  73.         // 地址栏  
  74.         addressTex = new JTextField(40);          
  75.   
  76.         btgoto = new JButton("转到");  
  77.         btgoto.addActionListener(this);  
  78.         btback = new JButton("返回");  
  79.         btback.addActionListener(this);  
  80.         JPanel toolpanel = new JPanel();  
  81.         // 设置颜色  
  82.         toolpanel.setBackground(Color.pink);  
  83.         toolpanel.setLayout(new FlowLayout());  
  84.         toolpanel.add(btback);  
  85.         toolpanel.add(addressTex);  
  86.         toolpanel.add(btgoto);  
  87.   
  88.         contentPane.add(toolpanel, BorderLayout.NORTH);  
  89.   
  90.         // 状态栏  
  91.         statusLbl = new JLabel("status: ");  
  92.         contentPane.add(statusLbl, BorderLayout.SOUTH);  
  93.         // 浏览器体部  
  94.         centerPane = new JScrollPane();  
  95.         // 显示区域  
  96.         JViewport view = centerPane.getViewport();  
  97.         // 内容显示  
  98.         textArea = new JEditorPane();  
  99.         // 监听超链接,使其生效  
  100.         textArea.addHyperlinkListener(new HyperlinkListener() {  
  101.             public void hyperlinkUpdate(HyperlinkEvent e) {  
  102.                 if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {  
  103.                     JEditorPane pane = (JEditorPane) e.getSource();  
  104.                     statusLbl.setText(e.getURL().toString());  
  105.                     if (e instanceof HTMLFrameHyperlinkEvent) {  
  106.                         HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent) e;  
  107.                         HTMLDocument doc = (HTMLDocument) pane.getDocument();  
  108.                         doc.processHTMLFrameHyperlinkEvent(evt);  
  109.                     } else {  
  110.                         try {  
  111.                             pane.setPage(e.getURL());  
  112.                         } catch (Throwable t) {  
  113.                             t.printStackTrace();  
  114.                         }  
  115.                     }  
  116.                 }  
  117.             }  
  118.         });  
  119.         addressTex.setText("http://www.baidu.com/");  
  120.         // 设置不可写操作  
  121.         textArea.setEditable(false);  
  122.         view.add(textArea);  
  123.         contentPane.add(centerPane);  
  124.   
  125.     }  
  126.   
  127.     public void actionPerformed(ActionEvent e) {  
  128.           
  129.         //“转到”操作  
  130.         if (e.getSource() == btgoto) {  
  131.             String address = addressTex.getText().trim();  
  132.             statusLbl.setText(address);  
  133.             try {  
  134.                 if (addressTex.getText().length() > 0  
  135.                         && (addressTex.getText().startsWith("http://"))||addressTex.getText().startsWith("file:"))  
  136.                     textArea.setPage(address);  
  137.                 else if (addressTex.getText().length() > 0  
  138.                         && !addressTex.getText().startsWith("http://")) {  
  139.                     String newURL = "";  
  140.                     newURL = "http://" + addressTex.getText();  
  141.                     URL newurl = new URL(newURL);  
  142.                     addressTex.setText(newURL);  
  143.                     textArea.setPage(newurl);  
  144.                 }  
  145.             } catch (IOException e1) {  
  146.                 e1.printStackTrace();  
  147.             }  
  148.         }// end btgoto  
  149.   
  150.         //“返回”操作  
  151.         if (e.getSource() == btback) {  
  152.             String address = addressTex.getText().trim();  
  153.             try {  
  154.                 if (addressTex.getText().length() > 0  
  155.                         && addressTex.getText().startsWith("http://"))  
  156.                     textArea.setPage(address);  
  157.                 else if (addressTex.getText().length() > 0  
  158.                         && !addressTex.getText().startsWith("http://")) {  
  159.                     String newURL = "";  
  160.                     newURL = "http://" + addressTex.getText();// 加http:  
  161.                     textArea.setPage(newURL);  
  162.                 }  
  163.             } catch (IOException e1) {  
  164.                 e1.printStackTrace();  
  165.             }  
  166.         }// end btback  
  167.           
  168.         //“打开”操作  
  169.         if(e.getSource()==itemopen){  
  170.               
  171.             FileDialog fd = new FileDialog(new JFrame(), "Open a file",  
  172.                     FileDialog.LOAD);  
  173.             fd.setVisible(true);  
  174.             String name = fd.getFile();           
  175.             try {  
  176.                 URL url = new URL("file" + ":///" + fd.getDirectory() + name);  
  177.                 addressTex.setText(url.toString());  
  178.             } catch (Exception e1) {  
  179.                 JOptionPane.showMessageDialog(null"打开失败!""openopen打开文件",  
  180.                         JOptionPane.ERROR_MESSAGE);  
  181.             }  
  182.               
  183.         }//end itemopen  
  184.           
  185.         //“退出”操作  
  186.         if(e.getSource()==itemquit){  
  187.             System.exit(0);  
  188.         }//end itemquit  
  189.           
  190.     }//end actionPerformed  
  191.       
  192.       
  193.     public static void main(String[] args) {  
  194.         Browser bro = new Browser();  
  195.         bro.setVisible(true);  
  196.     }  

原创粉丝点击