基于swt和xml的java浏览器

    技术2025-06-13  24

    该浏览器共有九个类

    作者:jimmy

    写在前面:这个浏览器项目由于时间紧迫,有诸多问题,例如判断url是否合法的java类没有排除http://sports.qq.com/nba/诸如此类的情况,OO思想没有很好的贯彻,几个操作xml的文档类应该有一个基类,在其他方面问题也有,特此说明。

    Favourite.java 操作收藏夹xml的java类

    package com.jbrowser.simple; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.LinkedList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; public class Favourite { private Element root; private Document doc; private HashMap<String, HashMap<String, String>> map_favourite; private LinkedList<String> llst_foldername; public Favourite() { // 定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器 DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance(); try { // 定义 API, 使其从 XML 文档获取 DOM 文档实例 DocumentBuilder dombuild = domfac.newDocumentBuilder(); // 此抽象类是表示字节输入流的所有类的超类 InputStream inputstream = new FileInputStream("favorite.xml"); // Document 接口表示整个 HTML 或 XML 文档 // 它是文档树的根,并提供对文档数据的基本访问 doc = dombuild.parse(inputstream); // root为xml根节点 root = doc.getDocumentElement(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } llst_foldername = new LinkedList<String>(); NodeList nl = root.getChildNodes(); String str_name = null , str_url = null; //HashMap<String,String> map_value = new HashMap<String,String>(); map_favourite = new HashMap<String, HashMap<String,String>>(); if( nl != null ) { for( int i = 0 ; i < nl.getLength() ; i ++ ) { Node item = nl.item(i); if(item.getNodeName().equals("folder")) llst_foldername.add( item.getAttributes().getNamedItem("f_name").getNodeValue()); } } for( int i = 0 ; i < llst_foldername.size(); i++ ) { //System.out.println(nl.getLength()); for( int k = 0 ; k < nl.getLength() ; k ++) { Node item = nl.item(k); if (item.getNodeType() == Node.ELEMENT_NODE) { if (item.getAttributes().getNamedItem("f_name").getNodeValue() .equals(llst_foldername.get(i))) { NodeList f = item.getChildNodes(); for (int j = 0; j < f.getLength(); j++) { Node key = f.item(j); if (key.getNodeName().equals("name")) {str_name = key.getFirstChild().getNodeValue();} if (key.getNodeName().equals("url")) {str_url = key.getFirstChild().getNodeValue();} } } } } //System.out.println("Here"); if(str_name != null && str_url != null ){ HashMap<String,String> map_value = new HashMap<String,String>(); map_value.put(str_name, str_url); //System.out.println(map_value.containsKey("baidu")); //System.out.println(map_value.containsKey("google")); map_favourite.put(llst_foldername.get(i),map_value); } } //System.out.println(map_favourite.containsKey("chinese")); //System.out.println(map_favourite.containsKey("other")); } private void write() { // Document Object Model(DOM)树的形式充当转换 Source 树的持有者 DOMSource domsource = new DOMSource(doc); StreamResult result = new StreamResult(new File("favorite.xml")); TransformerFactory tff = TransformerFactory.newInstance(); try { Transformer tf = tff.newTransformer(); tf.transform(domsource, result); } catch (TransformerConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TransformerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void addfolder(String f_name) { Element eltfolder = doc.createElement("folder"); // 建立属性 Attr attr = doc.createAttribute("f_name"); attr.setValue(f_name); eltfolder.setAttributeNode(attr); root.appendChild(eltfolder); llst_foldername.add(f_name); write(); } public HashMap<String, HashMap<String, String>> getMap_favourite() { return map_favourite; } public void addItem(String f_name, String url, String name) { if (f_name.equals(null)) t_addItem("other", url, name); else t_addItem(f_name, url, name); } public void addItem(String url, String name) { t_addItem("other", url, name); } private void t_addItem(String f_name, String url, String name) { NodeList homepage = root.getChildNodes(); for (int i = 0; i < homepage.getLength(); i++) { Node node = homepage.item(i); /* getsibling()获得兄弟节点 */ if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getAttributes().getNamedItem("f_name").getNodeValue() .equals(f_name)) { Element eltName = doc.createElement("name"); Element eltUrl = doc.createElement("url"); Text textUrl = doc.createTextNode(url); Text textName = doc.createTextNode(name); eltName.appendChild(textName); eltUrl.appendChild(textUrl); node.appendChild(eltUrl); node.appendChild(eltName); if( map_favourite.containsKey(f_name)){ HashMap<String, String> map_value = map_favourite.get(f_name); map_value.put(name, url); map_favourite.remove(f_name); map_favourite.put(f_name, map_value); }else { HashMap<String, String> map_value = new HashMap<String, String>(); map_value.put(name, url); if( map_value != null ) map_favourite.put(f_name,map_value); } } } } write(); } public void remove(String f_name, String name) { t_remove(f_name, name); } public void remove(String name) { t_remove("other", name); HashMap<String, String> map_value = map_favourite.get("other"); map_value.remove(name); map_favourite.remove("other"); map_favourite.put("other", map_value); } private void t_remove(String f_name, String name) { // Node home = root.getFirstChild(); NodeList homepage = root.getChildNodes(); boolean record = false; for (int i = 0; i < homepage.getLength(); i++) { Node node = homepage.item(i); /* getsibling()获得兄弟节点 */ if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getAttributes().getNamedItem("f_name").getNodeValue() .equals(f_name)) { NodeList f = node.getChildNodes(); for (int j = 0; j < f.getLength(); j++) { Node key = f.item(j); if (key.getNodeName().equals("name")) if (key.getFirstChild().getNodeValue().equals(name)) { key.getParentNode().removeChild(key); record = true; } if (key.getNodeName().equals("url")) if (record == true) { record = false; key.getParentNode().removeChild(key); } } } } } write(); } public void removefolder(String f_name) { NodeList homepage = root.getChildNodes(); for (int i = 0; i < homepage.getLength(); i++) { Node node = homepage.item(i); /* getsibling()获得兄弟节点 */ if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getAttributes().getNamedItem("f_name").getNodeValue() .equals(f_name)) { node.getParentNode().removeChild(node); } } } llst_foldername.remove(llst_foldername.indexOf(f_name)); map_favourite.remove(f_name); write(); } public void update(String f_name, String value, String e_value, String choice) { t_update(f_name, value, e_value, choice); } public void update(String value, String e_value, String choice) { t_update("other", value, e_value, choice); } private void t_update(String f_name, String value, String e_value, String choice) { NodeList homepage = root.getChildNodes(); for (int i = 0; i < homepage.getLength(); i++) { Node node = homepage.item(i); /* getsibling()获得兄弟节点 */ if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getAttributes().getNamedItem("f_name").getNodeValue() .equals(f_name)) { NodeList f = node.getChildNodes(); if (choice.equals("name")) for (int j = 0; j < f.getLength(); j++) { Node key = f.item(j); if (key.getNodeName().equals("name")) if (key.getFirstChild().getNodeValue().equals( value)) { key.getFirstChild().setNodeValue(e_value); } } else for (int j = 0; j < f.getLength(); j++) { Node key = f.item(j); if (key.getNodeName().equals("url")) if (key.getFirstChild().getNodeValue().equals( value)) { key.getFirstChild().setNodeValue(e_value); } } } } } write(); } public void updatefolder(String f_name, String e_value) { NodeList homepage = root.getChildNodes(); for (int i = 0; i < homepage.getLength(); i++) { Node node = homepage.item(i); /* getsibling()获得兄弟节点 */ if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getAttributes().getNamedItem("f_name").getNodeValue() .equals(f_name)) { node.setNodeValue(e_value); } } } llst_foldername.remove(llst_foldername.indexOf(f_name)); llst_foldername.add(e_value); HashMap<String,String> map_value = new HashMap<String, String>(); map_value = map_favourite.get(f_name); map_favourite.remove(f_name); map_favourite.put(e_value,map_value); write(); } }  

    FileBrowser.java 文档浏览类

    package com.jbrowser.simple; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.SimpleDateFormat; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.browser.OpenWindowListener; import org.eclipse.swt.browser.WindowEvent; import org.eclipse.swt.widgets.Combo; public class FileBrowser { //private static final File filter = null; private String name; private Browser browser; private Combo text; public FileBrowser(String name, Browser browser, Combo text) { super(); this.name = name; this.browser = browser; this.text = text; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Browser getBrowser() { return browser; } public void setBrowser(Browser browser) { this.browser = browser; } public Combo getText() { return text; } public void setText(Combo text) { this.text = text; } public void showText(){ browser.addOpenWindowListener(new OpenWindowListener() { @Override public void open(WindowEvent event) { // TODO Auto-generated method stub event.browser = browser; } }); if(name.length() == 0) return ; JudgeUrl judge = new JudgeUrl(name); if( !judge.isExist() ) { File file = new File(name); FileInputStream fis = null; long read = 0; try{ fis = new FileInputStream(file); read = fis.available(); }catch(FileNotFoundException e){ e.printStackTrace(); browser.setText("File not found"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); browser.setText("Read file error"); } if(read != 0){ try { String[] cmd = new String[5]; String url =name; cmd[0] = "cmd"; cmd[1] = "/c"; cmd[2] = "start"; cmd[3] = " "; cmd[4] = url; Runtime.getRuntime().exec(cmd); }catch (IOException e){ e.printStackTrace(); browser.setText("File Error"); } browser.setText(file.getName()); } else { File[] files = file.listFiles(); if(!file.exists()){ browser.setText("File not found"); } else { int i=0; String s = new String(); s="<html><head><title>资源管理</title></head>" +"<body><table width=/"600/" Cellspacing=/"10/" align=/"left/">"; s+="<tr align=/"left/">"+"<th>文件名称</th><th>最后修改时间</th><th>文件大小</th>"; while(i<files.length) { long t=0; FileInputStream fis1 = null; try { fis1 = new FileInputStream(files[i]); t= fis1.available(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } s+="<tr>"; s += "<td><a href=" + name+" mce_href=" + name+"/"+files[i].getName() + ">"; s=s+files[i].getName()+"</a></td>"; long time=files[i].lastModified(); SimpleDateFormat sformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String ss=sformat.format(time); s=s+"<td>"+ss+"</td>"; if(!files[i].isDirectory()) s+="<td>"+String.valueOf((float)t/1024)+"KB</td>"; else s+="<td>文件夹</td>"; s+="<tr>"; i++; } s+="</table></body></html>"; browser.setText(s); } } name="file:///"+name; text.setText(name); } } }  

    HistoryRecord.java 操作历史记录xml文件的类

    package com.jbrowser.simple; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.LinkedList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; public class HistoryRecord { private Element root; private Document doc; private int recordNum = 50; private LinkedList<String> list; public int getRecordNum() { String value = root.getAttributes().getNamedItem("recordNum").getNodeValue(); recordNum = Integer.parseInt(value); return recordNum; } public void setRecordNum(int recordNum) { this.recordNum = recordNum; Integer value = recordNum; root.getAttributes().getNamedItem("recordNum").setNodeValue(value.toString()); write(); } public HistoryRecord(){ //定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器 DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance(); try { //定义 API, 使其从 XML 文档获取 DOM 文档实例 DocumentBuilder dombuild = domfac.newDocumentBuilder(); //此抽象类是表示字节输入流的所有类的超类 InputStream inputstream = new FileInputStream("history.xml"); //Document 接口表示整个 HTML 或 XML 文档 //它是文档树的根,并提供对文档数据的基本访问 doc = dombuild.parse(inputstream); //root为xml根节点 root = doc.getDocumentElement(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.recordNum = getRecordNum(); list = new LinkedList<String>(); NodeList history = root.getChildNodes(); System.out.println(history.getLength()); if(history.getLength() != 0) for(int i = 0; i < history.getLength(); i++){ Node item = history.item(i); //System.out.println(item.getNodeValue()); //list.add(item.getFirstChild().getNodeValue()); if(item.getNodeName().equals("record")) { if(item.getFirstChild()!= null) if(item.getFirstChild().getNodeValue() != null ) list.add(item.getFirstChild().getNodeValue()); } } } private void remove(){ NodeList history = root.getChildNodes(); for(int i = 0; i < history.getLength(); i++){ Node item = history.item(i); root.removeChild(item); } write(); } public void removeAll(){ NodeList history = root.getChildNodes(); while(history.getLength()!=0){ remove(); } } public LinkedList<String> gethistory(){ return list; } public void add(String url){ NodeList history = root.getChildNodes(); for(int i = 0; i < history.getLength(); i++){ Node item = history.item(i); Integer value = i + 1; if(item.getNodeName().equals("record")) item.getAttributes().getNamedItem("num").setNodeValue(value.toString()); } addtofirst(url); if(judge()){ removetoend(); } write(); } private void addtofirst(String url){ Element record = doc.createElement("record"); Attr num = doc.createAttribute("num"); num.setValue("0"); Text text = doc.createTextNode(url); record.appendChild(text); record.setAttributeNode(num); list.addFirst(url); root.appendChild(record); } private void removetoend(){ NodeList history = root.getChildNodes(); for(int i = 0; i < history.getLength(); i++){ Node item = history.item(i); Integer value = getRecordNum() + 1; if(item.getAttributes().getNamedItem("num").getNodeValue().equals(value.toString())) { item.getParentNode().removeChild(item); list.removeLast(); break; } } } private void write(){ //Document Object Model(DOM)树的形式充当转换 Source 树的持有者 DOMSource domsource = new DOMSource(doc); StreamResult result = new StreamResult(new File("history.xml")); TransformerFactory tff = TransformerFactory.newInstance(); try { Transformer tf = tff.newTransformer(); tf.transform(domsource, result); } catch (TransformerConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TransformerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private boolean judge(){ //判断是否达到历史记录的限制 NodeList history = root.getChildNodes(); if(history.getLength() <= this.recordNum) return false; else return true; } }  

    HomePage.java 操作主页xml文件的类

    package com.jbrowser.simple; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.LinkedList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; //新建一个类用来存储数据 /** * * * * * */ public class HomePage { private Element root; private Document doc; private LinkedList<String> list; public HomePage(){ //定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器 DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance(); try { //定义 API, 使其从 XML 文档获取 DOM 文档实例 DocumentBuilder dombuild = domfac.newDocumentBuilder(); //此抽象类是表示字节输入流的所有类的超类 InputStream inputstream = new FileInputStream("homepage.xml"); //Document 接口表示整个 HTML 或 XML 文档 //它是文档树的根,并提供对文档数据的基本访问 doc = dombuild.parse(inputstream); //root为xml根节点 root = doc.getDocumentElement(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } NodeList homepage = root.getChildNodes(); list = new LinkedList<String>(); if( homepage != null ){ for( int i = 0 ; i < homepage.getLength(); i++){ Node item = homepage.item(i); if( item.getNodeType() == Node.ELEMENT_NODE){ //getsibling()获得兄弟节点 for(Node node= item.getFirstChild(); node!=null; node=node.getNextSibling()){ if(node.getNodeType()==Node.ELEMENT_NODE){ if(node.getNodeName().equals("url")){ String url =node.getFirstChild().getNodeValue(); list.add(url); } } } } } } } public void addItem(String url, String name){ Element eltItem = doc.createElement("item"); Element eltName = doc.createElement("name"); Element eltUrl = doc.createElement("url"); JudgeUrl judge = new JudgeUrl(url); if( judge.isExist()){ Text textUrl = doc.createTextNode(url); Text textName = doc.createTextNode(name); eltName.appendChild(textName); eltUrl.appendChild(textUrl); eltItem.appendChild(eltName); eltItem.appendChild(eltUrl); root.appendChild(eltItem); list.add(url); write(); } } public void removeItem( String URL){ NodeList homepage = root.getChildNodes(); if(homepage != null){ for(int i = 0; i < homepage.getLength(); i++){ Node item = homepage.item(i); if( item.getNodeType() == Node.ELEMENT_NODE){ /*getsibling()获得兄弟节点*/ for(Node node= item.getFirstChild(); node!=null; node=node.getNextSibling()){ if(node.getNodeType()==Node.ELEMENT_NODE){ if(node.getNodeName().equals("url")){ String name =node.getFirstChild().getNodeValue(); if( name.equals(URL) ){ node.getParentNode().getParentNode().removeChild(node.getParentNode()); list.remove(URL); } } } } } } } write(); } public void show(){ NodeList homepage = root.getChildNodes(); if( homepage != null ){ for( int i = 0 ; i < homepage.getLength(); i++){ Node item = homepage.item(i); if( item.getNodeType() == Node.ELEMENT_NODE){ /*getsibling()获得兄弟节点*/ for(Node node= item.getFirstChild(); node!=null; node=node.getNextSibling()){ if(node.getNodeType()==Node.ELEMENT_NODE){ if(node.getNodeName().equals("name")){ String name =node.getFirstChild().getNodeValue(); System.out.println(name); } if(node.getNodeName().equals("url")){ String url =node.getFirstChild().getNodeValue(); System.out.println(url); } } } } } } } public LinkedList<String> getHomePage(){ return list; } public void removeItemALL(){ NodeList homepage = root.getChildNodes(); while(homepage.getLength()!=0) r_removeItemALL(); } public void r_removeItemALL(){ NodeList homepage = root.getChildNodes(); for(int i=0 ; i < homepage.getLength(); i ++){ Node item = homepage.item(i); //item.getParentNode().removeChild(item); System.out.println(item.getNodeName()); item.getParentNode().removeChild(item); } list.clear(); write(); } public void updateItemName(String Name , String r_name){ NodeList homepage = root.getChildNodes(); if(homepage != null){ for(int i = 0; i < homepage.getLength(); i++){ Node item = homepage.item(i); if( item.getNodeType() == Node.ELEMENT_NODE){ /*getsibling()获得兄弟节点*/ for(Node node= item.getFirstChild(); node!=null; node=node.getNextSibling()){ if(node.getNodeType()==Node.ELEMENT_NODE){ if(node.getNodeName().equals("name")){ String name =node.getFirstChild().getNodeValue(); if( name.equals(Name) ){ node.getFirstChild().setNodeValue(r_name); //list.set(list.indexOf(Name), r_name); } } } } } } } write(); } public void updateItemURL(String url , String r_url){ NodeList homepage = root.getChildNodes(); if(homepage != null){ for(int i = 0; i < homepage.getLength(); i++){ Node item = homepage.item(i); if( item.getNodeType() == Node.ELEMENT_NODE){ /*getsibling()获得兄弟节点*/ for(Node node= item.getFirstChild(); node!=null; node=node.getNextSibling()){ if(node.getNodeType()==Node.ELEMENT_NODE){ if(node.getNodeName().equals("url")){ String name =node.getFirstChild().getNodeValue(); if( name.equals(url) ) node.getFirstChild().setNodeValue(r_url); list.set(list.indexOf(url), r_url); } } } } } } write(); } public boolean existURL(String URLName){ try { //设置此类是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。 HttpURLConnection.setFollowRedirects(false); //到 URL 所引用的远程对象的连接 HttpURLConnection con = (HttpURLConnection) new URL(URLName) .openConnection(); /* 设置 URL 请求的方法, GET POST HEAD OPTIONS PUT DELETE TRACE 以上方法之一是合法的,具体取决于协议的限制。*/ con.setRequestMethod("HEAD"); //从 HTTP 响应消息获取状态码 return (con.getResponseCode() == HttpURLConnection.HTTP_OK); } catch (Exception e) { e.printStackTrace(); return false; } } private void write(){ //Document Object Model(DOM)树的形式充当转换 Source 树的持有者 DOMSource domsource = new DOMSource(doc); StreamResult result = new StreamResult(new File("homepage.xml")); TransformerFactory tff = TransformerFactory.newInstance(); try { Transformer tf = tff.newTransformer(); tf.transform(domsource, result); } catch (TransformerConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TransformerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /*public static void main(String[] args){ HomePage x = new HomePage(); x.addItem("http://www.qq.com", "qq"); }*/ }  

    Input_info.java 基于dialog的对话框

    package com.jbrowser.simple; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Dialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class Input_Info extends Dialog{ private String message; private String input; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getInput() { return input; } public void setInput(String input) { this.input = input; } public Input_Info(Shell parent) { this(parent , SWT.DIALOG_TRIM|SWT.APPLICATION_MODAL); // TODO Auto-generated constructor stubi } public Input_Info(Shell parent, int style) { // TODO Auto-generated constructor stub super(parent,style); setText("JDialog"); setMessage("Input the name:"); } public String open(){ Shell shell = new Shell(getParent(),getStyle()); shell.setText(getText()); createContents(shell); shell.pack(); shell.open(); Display display = getParent().getDisplay(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } return input; } private void createContents(final Shell shell) { // TODO Auto-generated method stub // TODO Auto-generated method stub GridLayout grid = new GridLayout(2,true); shell.setLayout(grid); //show the name Label label_name = new Label(shell , SWT.NONE); label_name.setText(getMessage()); GridData data = new GridData(); data.horizontalSpan = 2; label_name.setLayoutData(data); // Display the input box final Text text_name = new Text(shell, SWT.BORDER); data = new GridData(GridData.FILL_HORIZONTAL); data.horizontalSpan = 2; text_name.setLayoutData(data); // Create the OK button and add a handler // so that pressing it will set input // to the entered value Button ok = new Button(shell, SWT.PUSH); ok.setText("OK"); data = new GridData(GridData.FILL_HORIZONTAL); ok.setLayoutData(data); ok.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { if(text_name.getText() != null){ setInput(text_name.getText()); } shell.close(); } }); // Create the cancel button and add a handler // so that pressing it will set input to null Button cancel = new Button(shell, SWT.PUSH); cancel.setText("Cancel"); data = new GridData(GridData.FILL_HORIZONTAL); cancel.setLayoutData(data); cancel.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { input = null; shell.close(); } }); // Set the OK button as the default, so // user can type input and press Enter // to dismiss shell.setDefaultButton(ok); } }  

    Input_value.java Input_info的返回值

    package com.jbrowser.simple; public class Input_value { private String input_url; private String input_name; public String getInput_url() { return input_url; } public void setInput_url(String inputUrl) { input_url = inputUrl; } public String getInput_name() { return input_name; } public void setInput_name(String inputName) { input_name = inputName; } }  

    JBrowser.java 界面类和主要逻辑类

    package com.jbrowser.simple; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.browser.CloseWindowListener; import org.eclipse.swt.browser.LocationEvent; import org.eclipse.swt.browser.LocationListener; import org.eclipse.swt.browser.OpenWindowListener; import org.eclipse.swt.browser.ProgressEvent; import org.eclipse.swt.browser.ProgressListener; import org.eclipse.swt.browser.StatusTextEvent; import org.eclipse.swt.browser.StatusTextListener; import org.eclipse.swt.browser.WindowEvent; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Device; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; /** * This class implements a web browser */ public class JBrowser { // The "at rest" text of the throbber private FileBrowser filebrowser; private JDialog jdialog; private Input_Info input_info; private HomePage homepage; private HistoryRecord history; private Favourite favourite; private TabFolder tab_folder; private List list_history; private Tree tree_favourite; private List list_homepage; private Label throbber; private Button button; private Combo url; private Button button_stop; private Button button_refresh; private Browser browser; private Browser browser2; private Label status; private Button button_forward; private Button button_back; private Button button_home; private Button button_favorite; private Button button_function; private static final String AT_REST = "Ready"; private static final Device Display = null; private String[] urlList = new String[256]; int urlListItemCount = 0; /** * JBrower Constructor */ public JBrowser(){ homepage = new HomePage(); history = new HistoryRecord(); favourite = new Favourite(); } /** * Runs the application * * @param location * the initial location to display */ public void run(String location) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("JBrowser"); Image image_mark = new Image(Display, "./icon/Mark.ico"); shell.setImage(image_mark); createContents(shell, location); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } /** * Creates the main window's contents * * @param shell * the main window * @param location * the initial location */ public void createContents(final Shell shell, String location) { shell.setLayout(new FormLayout()); // Create the composite to hold the buttons and text field Composite controls = new Composite(shell, SWT.FLAT); FormData data = new FormData(); data.top = new FormAttachment(0,0); data.left = new FormAttachment(0,0); data.right = new FormAttachment(100, 0); controls.setLayoutData(data); Composite control_function = new Composite(shell, SWT.NONE); FormData data_function = new FormData(); data_function.top = new FormAttachment(controls); data_function.left = new FormAttachment(0,0); data_function.right = new FormAttachment(20, 0); data_function.bottom = new FormAttachment(100,0); control_function.setLayoutData(data_function); // Create the Menu Menu mainMenu = new Menu(shell, SWT.BAR); shell.setMenuBar(mainMenu); { MenuItem fileItem = new MenuItem(mainMenu, SWT.CASCADE); fileItem.setText("文件&F"); Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); fileItem.setMenu(fileMenu); { MenuItem newProjectItem = new MenuItem(fileMenu, SWT.PUSH); newProjectItem.setText("打开&O"); newProjectItem.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub String urlStr = url.getText(); int flag = 1; browser.setUrl(urlStr); for (int i = 0; i < urlListItemCount; i++) { if (urlList[i].equals(urlStr)) { flag = 0; } } if (flag == 1) { urlList[urlListItemCount] = urlStr; list_history.add(urlStr); history.add(urlStr); url.add(urlStr); urlListItemCount++; } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); MenuItem saveItem = new MenuItem(fileMenu, SWT.PUSH); saveItem.setText("保存&S"); MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH); exitItem.setText("退出&E"); exitItem.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent event) { // TODO Auto-generated method stub browser2.getShell().close(); } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); } MenuItem EditItem = new MenuItem(mainMenu, SWT.CASCADE); EditItem.setText("编辑&E"); // Menu EditMenu = new Menu(shell,SWT.DROP_DOWN); MenuItem helpItem = new MenuItem(mainMenu, SWT.CASCADE); helpItem.setText("帮助&H"); } // Create the status bar status = new Label(shell, SWT.NONE); data = new FormData(); data.left = new FormAttachment(0, 0); data.right = new FormAttachment(100, 0); data.bottom = new FormAttachment(100, 0); status.setLayoutData(data); // Create the web browser browser = new Browser(shell, SWT.BORDER); browser.addOpenWindowListener(new OpenWindowListener() { @Override public void open(WindowEvent event) { Browser browsertest = (Browser) event.widget; // final Shell shell = browser.getShell(); System.out.println(null == browsertest ? "为null" : browsertest .getUrl()); Shell shell = new Shell(); createContents(shell, null); shell.open(); if (event != null){ //JudgeUrl judge = new JudgeUrl(browser.getUrl()); //System.out.println(judge.isExist()); System.out.println(browser.getUrl()); //if(judge.isExist()){ event.browser = browser; list_history.add(browser.getUrl()); history.add(browser.getUrl()); //} /*else { filebrowser = new FileBrowser(browser.getUrl(),browser,url); filebrowser.showText(); }*/ } } }); data = new FormData(); data.top = new FormAttachment(controls); data.bottom = new FormAttachment(status); data.left = new FormAttachment(control_function); data.right = new FormAttachment(100, 0); browser.setLayoutData(data); // Create the web browser browser2 = new Browser(shell, SWT.BORDER); browser2.addOpenWindowListener(new OpenWindowListener() { public void open(WindowEvent arg0) { String urlStr = arg0.browser.getUrl(); int flag = 1; browser2.setVisible(false); browser.setVisible(true); JudgeUrl judge = new JudgeUrl(browser.getUrl()); if(judge.isExist()){ arg0.browser = browser; list_history.add(browser.getUrl()); history.add(browser.getUrl()); } else { filebrowser = new FileBrowser(browser.getUrl(),browser,url); filebrowser.showText(); } for (int i = 0; i < urlListItemCount; i++) { if (urlList[i].equals(urlStr)) { flag = 0; } } if (flag == 1) { urlList[urlListItemCount] = urlStr; list_history.add(urlStr); history.add(urlStr); url.add(urlStr); url.setText(urlStr); urlListItemCount++; } } }); data = new FormData(); data.top = new FormAttachment(controls); data.bottom = new FormAttachment(status); data.left = new FormAttachment(0, 0); data.right = new FormAttachment(control_function); browser2.setLayoutData(data); // Create the controls and wire them to the browser controls.setLayout(new GridLayout(10, false)); // Create the back button button_back = new Button(controls, SWT.PUSH); //button_back.setText("后退"); Image image_backward = new Image(Display, "./icon/Backward.ico"); button_back.setImage(image_backward); button_back.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { browser.back(); } }); // Create the forward button button_forward = new Button(controls, SWT.PUSH); //button_forward.setText("前进"); Image image_forward = new Image(Display, "./icon/Forward.ico"); button_forward.setImage(image_forward); button_forward.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { browser.forward(); } }); // Create the refresh button button_refresh = new Button(controls, SWT.PUSH); //button_refresh.setText("刷新"); Image image_refresh = new Image(Display, "./icon/Refresh.ico"); button_refresh.setImage(image_refresh); button_refresh.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { browser.refresh(); } }); // Create the stop button button_stop = new Button(controls, SWT.PUSH); //button_stop.setText("停止"); Image image_stop = new Image(Display, "./icon/Stop.ico"); button_stop.setImage(image_stop); button_stop.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { browser.stop(); } }); button_home = new Button(controls, SWT.PUSH); Image image_home = new Image(Display, "./icon/Home.png"); button_home.setImage(image_home); button_home.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub browser.setUrl(list_homepage.getItem(0)); } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); button_favorite = new Button(controls, SWT.PUSH); //button_favorite.setText("收藏夹"); Image image_favorite = new Image(Display, "./icon/Favorites.ico"); button_favorite.setImage(image_favorite); button_favorite.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub input_info = new Input_Info(shell); String temp = input_info.open(); if(temp != null ) favourite.addItem(browser.getUrl(),temp); else favourite.addItem(browser.getUrl(), browser.getUrl()); TreeItem nodevalue = new TreeItem(tree_favourite.getTopItem(), SWT.NONE); nodevalue.setText(browser.getUrl()); } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); // Create the address entry field and set focus to it url = new Combo(controls, SWT.ARROW_DOWN); url.setLayoutData(new GridData(600, SWT.DEFAULT)); url.setSize(700, url.getSize().y); url.setFocus(); // Create the go button button = new Button(controls, SWT.PUSH); //button.setText("Go"); Image image_OK = new Image(Display, "./icon/add.gif"); button.setImage(image_OK); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { String urlStr = url.getText(); int flag = 1; JudgeUrl judge = new JudgeUrl(urlStr); if( !judge.isExist()) { filebrowser = new FileBrowser(urlStr,browser,url); filebrowser.showText(); }else browser.setUrl(urlStr); for (int i = 0; i < urlListItemCount; i++) { if (urlList[i].equals(urlStr)) { flag = 0; } } if (flag == 1) { urlList[urlListItemCount] = urlStr; list_history.add(urlStr); history.add(urlStr); url.add(urlStr); urlListItemCount++; } } }); // Create the animated "throbber" throbber = new Label(controls, SWT.NONE); throbber.setText(AT_REST); // Create the function button button_function = new Button(controls, SWT.PUSH); Image image_function = new Image(Display, "./icon/function.gif"); button_function.setImage(image_function); button_function.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { } }); tab_folder = new TabFolder(control_function, SWT.NONE); tab_folder.setBounds(5, 5, 180, 420); //tab_folder.pack(); TabItem tabItem_homepage = new TabItem(tab_folder, SWT.NONE);// 声明第1个选项页 tabItem_homepage.setText("主页"); // 设置选项页的标题 { Group group_homepage=new Group(tab_folder,SWT.NONE); tabItem_homepage.setControl(group_homepage); ScrolledComposite control_homepage = new ScrolledComposite(group_homepage, SWT.FLAT); control_homepage.setVisible(true); control_homepage.setBounds(5, 30, 350, 370); list_homepage = new List(control_homepage, SWT.V_SCROLL|SWT.MULTI|SWT.BORDER); LinkedList<String> str_homepage = homepage.getHomePage(); str_homepage.getFirst(); for(int j = 0; !str_homepage.get(j).equals(str_homepage.getLast()) ; j ++) list_homepage.add(str_homepage.get(j)); list_homepage.add(str_homepage.getLast()); list_homepage.setBounds(5,5,150,330); Button button_remove = new Button(group_homepage, SWT.PUSH); button_remove.setText("删除"); button_remove.setBounds(5,5,40,20); Button button_removeall = new Button(group_homepage, SWT.PUSH); button_removeall.setText("删除全部"); button_removeall.setBounds(50,5,60,20); Button button_add = new Button(group_homepage, SWT.PUSH); button_add.setText("添加"); button_add.setBounds(115,5,40,20); SelectionAdapter listener = new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub super.widgetSelected(e); Button selected = (Button) e.widget; if(selected.getText().equalsIgnoreCase("删除")){ //System.out.println((list_homepage.getSelectionIndex())); homepage.removeItem(list_homepage.getItem(list_homepage.getSelectionIndex())); move(list_homepage.getSelection()); //homepage.removeItem(list_homepage.) }else if(selected.getText().equals("删除全部")){ list_homepage.removeAll(); homepage.removeItemALL(); } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub super.widgetDefaultSelected(e); } public void move(String[] items){ for(int i = 0; i < items.length ;i ++){ list_homepage.remove(items[i]); } } }; button_remove.addSelectionListener(listener); button_removeall.addSelectionListener(listener); button_add.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub jdialog = new JDialog(shell); jdialog.open(); Input_value info = jdialog.getInput(); if(info != null){ list_homepage.add(info.getInput_url()); homepage.addItem(info.getInput_url(), info.getInput_name()); } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); list_homepage.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub if(list_homepage.getSelectionIndex()!= -1) { if(list_homepage.getItem(list_homepage.getSelectionIndex())!=null){ list_history.add(list_homepage.getItem(list_homepage.getSelectionIndex())); history.add(list_homepage.getItem(list_homepage.getSelectionIndex())); browser.setUrl(list_homepage.getItem(list_homepage.getSelectionIndex())); } } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); } TabItem tabItem_history = new TabItem(tab_folder, SWT.NONE); // 声明第2个选项页 tabItem_history.setText("历史记录"); { Group group_history=new Group(tab_folder,SWT.NONE); tabItem_history.setControl(group_history); Composite control_history = new Composite(group_history, SWT.FLAT); control_history.setVisible(true); control_history.setBounds(5, 30, 350, 370); list_history = new List(control_history, SWT.V_SCROLL|SWT.MULTI|SWT.BORDER); LinkedList<String> str_homepage = history.gethistory(); //str_homepage.getFirst(); for(int j = 0; j < str_homepage.size() ; j ++) list_history.add(str_homepage.get(j)); //list_history.add(str_homepage.getLast()); list_history.setBounds(5,5,150,330); Button button_removeall = new Button(group_history, SWT.PUSH); button_removeall.setText("删除全部"); button_removeall.setBounds(50,5,60,20); SelectionAdapter listener = new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub super.widgetSelected(e); Button selected = (Button) e.widget; if(selected.getText().equals("删除全部")){ list_history.removeAll(); history.removeAll(); } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub super.widgetDefaultSelected(e); } }; button_removeall.addSelectionListener(listener); list_history.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub if(list_history.getSelectionCount() == 1 ) browser.setUrl(list_history.getItem(list_history.getSelectionIndex())); } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); } TabItem tabItem_favourite = new TabItem(tab_folder, SWT.NONE); // 声明第2个选项页 tabItem_favourite.setText("收藏夹"); { Group group_favourite=new Group(tab_folder,SWT.NONE); tabItem_favourite.setControl(group_favourite); Composite control_favourite = new Composite(group_favourite, SWT.FLAT); control_favourite.setVisible(true); control_favourite.setBounds(5, 50, 350, 370); tree_favourite = new Tree(control_favourite,SWT.BORDER); tree_favourite.setBounds(5,5,150,330); HashMap<String,HashMap<String,String>> map_favourite = favourite.getMap_favourite(); Set<Entry<String, HashMap<String, String>>> entrys = map_favourite.entrySet(); for(Iterator<Entry<String, HashMap<String, String>>> it = entrys.iterator(); it.hasNext();){ Map.Entry<String,HashMap<String,String>> entry = (Map.Entry<String,HashMap<String,String>>)it.next(); String key = entry.getKey(); TreeItem nodefolder = new TreeItem(tree_favourite, SWT.NONE); nodefolder.setText(key); HashMap<String,String> map_value = entry.getValue(); System.out.println(map_value.size()); Set<Entry<String,String>> entrys_value = map_value.entrySet(); for(Iterator<Entry<String, String>> it_value = entrys_value.iterator();it_value.hasNext();){ Map.Entry<String, String> entry_value = (Map.Entry<String, String>) it_value.next(); TreeItem nodevalue = new TreeItem(nodefolder, SWT.NONE); nodevalue.setText(entry_value.getValue()); } } tree_favourite.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub if(tree_favourite.getSelectionCount() == 1) if(tree_favourite.getSelection().length == 1){ TreeItem key = tree_favourite.getSelection()[0]; if(key.getItems().length==0){ browser.setUrl(key.getText()); list_history.add(key.getText()); history.add(key.getText()); } } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); Button button_remove = new Button(group_favourite, SWT.PUSH); button_remove.setText("删除"); button_remove.setBounds(5,5,40,20); Button button_removeall = new Button(group_favourite, SWT.PUSH); button_removeall.setText("删除全部"); button_removeall.setBounds(50,5,60,20); Button button_add = new Button(group_favourite, SWT.PUSH); button_add.setText("添加"); button_add.setBounds(5,25,40,20); Button button_addfolder = new Button(group_favourite, SWT.PUSH); button_addfolder.setText("添加文件夹"); button_addfolder.setBounds(50,25, 80, 20); button_add.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub jdialog = new JDialog(shell); jdialog.open(); Input_value info = jdialog.getInput(); if(tree_favourite.getSelectionCount() == 1){ if(info.getInput_name()!= null&&info.getInput_url()!=null){ TreeItem value = new TreeItem(tree_favourite.getSelection()[0],SWT.NONE); value.setText(info.getInput_url()); favourite.addItem(info.getInput_url(), info.getInput_name()); } } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); button_addfolder.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub input_info = new Input_Info(shell); String temp = input_info.open(); if(temp != null ){ TreeItem value = new TreeItem(tree_favourite , SWT.NONE); value.setText(temp); favourite.addfolder(temp); } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); button_remove.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub if(tree_favourite.getSelection().length == 1){ TreeItem key = tree_favourite.getSelection()[0]; if(key.getItems().length==0){ if(key.getText()!=null&&key.getParentItem().getText()!=null) favourite.remove(key.getParentItem().getText(), key.getText()); } } if(tree_favourite.getSelectionCount()==1) tree_favourite.getSelection()[0].dispose(); } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); } // Allow users to hit enter to go to the typed URL shell.setDefaultButton(button); // Add event handlers browser.addCloseWindowListener(new AdvancedCloseWindowListener()); browser.addLocationListener(new AdvancedLocationListener(url)); browser.addProgressListener(new AdvancedProgressListener(throbber)); browser.addStatusTextListener(new AdvancedStatusTextListener(status)); // Go to the initial URL if (location != null) { browser.setUrl(location); } } /** * This class implements a CloseWindowListener for TestBrowser */ class AdvancedCloseWindowListener implements CloseWindowListener { /** * Called when the parent window should be closed */ public void close(WindowEvent event) { // Close the parent window ((Browser) event.widget).getShell().close(); } } /** * This class implements a LocationListener for TestBrowser */ class AdvancedLocationListener implements LocationListener { // The address text box to update private Combo location; /** * Constructs an AdvancedLocationListener * * @param text * the address text box to update */ public AdvancedLocationListener(Combo text) { // Store the address box for updates location = text; } /** * Called before the location changes * * @param event * the event */ public void changing(LocationEvent event) { // Show the location that's loading location.setText("加载 " + event.location + "..."); } /** * Called after the location changes * * @param event * the event */ public void changed(LocationEvent event) { // Show the loaded location location.setText(event.location); } } /** * This class implements a ProgressListener for TestBrowser */ class AdvancedProgressListener implements ProgressListener { // The label on which to report progress private Label progress; /** * Constructs an AdvancedProgressListener * * @param label * the label on which to report progress */ public AdvancedProgressListener(Label label) { // Store the label on which to report updates progress = label; } /** * Called when progress is made * * @param event * the event */ public void changed(ProgressEvent event) { // Avoid divide-by-zero if (event.total != 0) { // Calculate a percentage and display it int percent = (int) (event.current / event.total); progress.setText(percent + "%"); } else { // Since we can't calculate a percent, show confusion :-) progress.setText("完成"); } } /** * Called when load is complete * * @param event * the event */ public void completed(ProgressEvent event) { // Reset to the "at rest" message progress.setText(AT_REST); } } /** * This class implements a StatusTextListener for TestBrowser */ class AdvancedStatusTextListener implements StatusTextListener { // The label on which to report status private Label status; /** * Constructs an AdvancedStatusTextListener * * @param label * the label on which to report status */ public AdvancedStatusTextListener(Label label) { // Store the label on which to report status status = label; } /** * Called when the status changes * * @param event * the event */ public void changed(StatusTextEvent event) { // Report the status status.setText(event.text); } } /** * The application entry point * * @param args * the command line arguments */ public static void main(String[] args) { HomePage homepage = new HomePage(); LinkedList<String> home = homepage.getHomePage(); String url = (String)home.getFirst(); if(url != null) new JBrowser().run(url); else new JBrowser().run(null); } }  

    JDialog.java 另一个对话框

    package com.jbrowser.simple; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Dialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class JDialog extends Dialog{ private String message_url; private String message_name; private Input_value input; /** * InputDialog constructor * * @param parent the parent */ public JDialog(Shell parent) { // TODO Auto-generated constructor stub this(parent , SWT.DIALOG_TRIM|SWT.APPLICATION_MODAL); } public JDialog(Shell parent, int style) { // TODO Auto-generated constructor stub super(parent,style); setText("JDialog"); setMessage_name("Input the name:"); setMessage_url("Input the url"); } public String getMessage_url() { return message_url; } public void setMessage_url(String messageUrl) { message_url = messageUrl; } public String getMessage_name() { return message_name; } public void setMessage_name(String messageName) { message_name = messageName; } public Input_value getInput() { return input; } public void setInput(Input_value input) { this.input = input; } public Input_value open(){ Shell shell = new Shell(getParent(),getStyle()); shell.setText(getText()); createContents(shell); shell.pack(); shell.open(); Display display = getParent().getDisplay(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } // Return the entered value, or null return input; } private void createContents(final Shell shell) { // TODO Auto-generated method stub GridLayout grid = new GridLayout(2,true); shell.setLayout(grid); //show the name Label label_name = new Label(shell , SWT.NONE); label_name.setText(getMessage_name()); GridData data = new GridData(); data.horizontalSpan = 2; label_name.setLayoutData(data); // Display the input box final Text text_name = new Text(shell, SWT.BORDER); data = new GridData(GridData.FILL_HORIZONTAL); data.horizontalSpan = 2; text_name.setLayoutData(data); //show the url Label label_url = new Label(shell , SWT.NONE); label_url.setText(getMessage_url()); GridData data_url = new GridData(); data_url.horizontalSpan = 2; label_url.setLayoutData(data_url); // Display the input box final Text text_url = new Text(shell, SWT.BORDER); data = new GridData(GridData.FILL_HORIZONTAL); data.horizontalSpan = 2; text_url.setLayoutData(data); // Create the OK button and add a handler // so that pressing it will set input // to the entered value Button ok = new Button(shell, SWT.PUSH); ok.setText("OK"); data = new GridData(GridData.FILL_HORIZONTAL); ok.setLayoutData(data); ok.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { if(text_name.getText() != null && text_url.getText() != null){ input = new Input_value(); input.setInput_name(text_name.getText()); input.setInput_url(text_url.getText()); } shell.close(); } }); // Create the cancel button and add a handler // so that pressing it will set input to null Button cancel = new Button(shell, SWT.PUSH); cancel.setText("Cancel"); data = new GridData(GridData.FILL_HORIZONTAL); cancel.setLayoutData(data); cancel.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { input = null; shell.close(); } }); // Set the OK button as the default, so // user can type input and press Enter // to dismiss shell.setDefaultButton(ok); } }  

    JudgeUrl.java 判断url是否合法

    package com.jbrowser.simple; import java.util.regex.Matcher; import java.util.regex.Pattern; public class JudgeUrl { private static String regex = "((http://)?([a-z]+[.])|(www.))//w+[.]([a-z]{2,4})?[[.]([a-z]{2,4})]" + "+((/[//S&&[^,;/u4E00-/u9FA5]]+)+)?([.][a-z]{2,4}+|/?)"; boolean exist; public boolean isExist() { return exist; } public void setExist(boolean exist) { this.exist = exist; } public JudgeUrl(String url){ //正则表达式的编译表示形式 Pattern pat = Pattern.compile(regex); //整个输入序列与该模式匹配 Matcher mat = pat.matcher(url); exist = mat.matches(); } }  

    最新回复(0)