java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

java编写浏览器

以前采用vb的webbrowser插件可以开发一个简单的浏览器,没想到java也具备这个功能。不过开发出来的看起来比较傻。看来不是java应该做的事情。或许是java还需要编写更多的代码来解析css和js

package com.javaer.examples.awt;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.io.IOException;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLFrameHyperlinkEvent;

public class WebView extends JFrame implements HyperlinkListener{
	public WebView() throws Exception {
		 setSize(640, 480);      setTitle("百度:中国最大的搜索引擎");  
	      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
	      JEditorPane editorPane = new JEditorPane();  
	      JScrollPane scrollPane = new JScrollPane(editorPane);  
	      editorPane.setEditable(false);  
	      
	      //要能响应网页中的链接,则必须加上超链监听器  
	      editorPane.addHyperlinkListener(this);  
	      String path = "http://www.baidu.com";  
	      try  
	      {  
	         editorPane.setPage(path);  
	      }  
	      catch (IOException e)  
	      {  
	         System.out.println("读取页面 " + path + " 出错. " + e.getMessage());  
	      }  
	      Container container = getContentPane();  
	      container.setBackground(Color.WHITE);
	      //让editorPane总是填满整个窗体  
	      container.add(scrollPane, BorderLayout.CENTER);  

	}
	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		WebView wv = new WebView();
		wv.setVisible(true);

	}

	
	  //超链监听器,处理对超级链接的点击事件,但对按钮的点击还捕获不到  
	@Override
	   public void hyperlinkUpdate(HyperlinkEvent e)  
	   {  
	      if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)  
	      {  
	         JEditorPane pane = (JEditorPane) e.getSource();  
	         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();  
	            }  
	         }  
	      }  
	   }  

}

java浏览器


This entry was posted in JAVA and tagged , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/java-browser/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply