隨筆 - 303  文章 - 883  trackbacks - 0
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          歡迎光臨! 
          閑聊 QQ:1074961813

          隨筆分類(357)

          我管理的群

          公共blog

          • n維空間
          • Email : java3d@126.com 群 : 12999758

          參與管理的論壇

          好友的blog

          我的其他blog

          朋友的網站

          搜索

          •  

          最新評論

          啊大家好啊

          我是尋覓 最近在弄GUI 開始使用工具開發了
          eclipse確實很不錯,前面的幾個文章已經向大家介紹了如何在eclipse下使用designer工具開發swt java應用程序
          最近我也寫了些啊 效果確實不錯 下面是一個瀏覽器的代碼 運行起來使用后感覺非常的快
          有興趣的朋友可以在上面做二次開發哦…………
          源代碼前面文章里有這里我再次給出,直接運行是不行的,需要相應的配置文件個圖片

          http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/download.php?dropFile=eclipse-examples-3.2.2-win32.zip

          /*******************************************************************************
           * Copyright (c) 2000, 2004 IBM Corporation and others.
           * All rights reserved. This program and the accompanying materials
           * are made available under the terms of the Eclipse Public License v1.0
           * which accompanies this distribution, and is available at
           * 
          http://www.eclipse.org/legal/epl-v10.html
           *
           * Contributors:
           *     IBM Corporation - initial API and implementation
           ******************************************************************************
          */

          package org.eclipse.swt.examples.browserexample;

          import org.eclipse.swt.*;
          import org.eclipse.swt.browser.*;
          import org.eclipse.swt.graphics.*;
          import org.eclipse.swt.layout.*;
          import org.eclipse.swt.widgets.*;

          import java.io.*;
          import java.util.*;

          public class BrowserExample {
              
          static ResourceBundle resourceBundle = ResourceBundle.getBundle("examples_browser");
              
          int index;
              
          boolean busy;
              Image images[];
              Image icon 
          = null;
              
          boolean title = false;
              Composite parent;
              Text locationBar;
              Browser browser;
              ToolBar toolbar;
              Canvas canvas;
              ToolItem itemBack, itemForward;
              Label status;
              ProgressBar progressBar;
              SWTError error 
          = null;

              
          static final String[] imageLocations = {
                      
          "eclipse01.bmp""eclipse02.bmp""eclipse03.bmp""eclipse04.bmp""eclipse05.bmp",
                      
          "eclipse06.bmp""eclipse07.bmp""eclipse08.bmp""eclipse09.bmp""eclipse10.bmp",
                      
          "eclipse11.bmp""eclipse12.bmp",}
          ;
              
          static final String iconLocation = "document.gif";
                  
              
          public BrowserExample(Composite parent, boolean top) {
                  
          this.parent = parent;
                  
          try {
                      browser 
          = new Browser(parent, SWT.BORDER);
                  }
           catch (SWTError e) {
                      error 
          = e;
                      
          /* Browser widget could not be instantiated */
                      parent.setLayout(
          new FillLayout());
                      Label label 
          = new Label(parent, SWT.CENTER | SWT.WRAP);
                      label.setText(getResourceString(
          "BrowserNotCreated"));
                      parent.layout(
          true);
                      
          return;
                  }

                  initResources();
                  
          final Display display = parent.getDisplay();
                  browser.setData(
          "org.eclipse.swt.examples.browserexample.BrowserApplication"this);
                  browser.addOpenWindowListener(
          new OpenWindowListener() {
                      
          public void open(WindowEvent event) {
                          Shell shell 
          = new Shell(display);
                          
          if (icon != null) shell.setImage(icon);
                          shell.setLayout(
          new FillLayout());
                          BrowserExample app 
          = new BrowserExample(shell, false);
                          app.setShellDecoration(icon, 
          true);
                          event.browser 
          = app.getBrowser();
                      }

                  }
          );
                  
          if (top) {
                      browser.setUrl(getResourceString(
          "Startup"));
                      show(
          falsenullnulltruetruetruetrue);
                  }
           else {
                      browser.addVisibilityWindowListener(
          new VisibilityWindowListener() {
                          
          public void hide(WindowEvent e) {
                          }

                          
          public void show(WindowEvent e) {
                              Browser browser 
          = (Browser)e.widget;
                              BrowserExample app 
          = (BrowserExample)browser.getData("org.eclipse.swt.examples.browserexample.BrowserApplication");
                              app.show(
          true, e.location, e.size, e.addressBar, e.menuBar, e.statusBar, e.toolBar);
                          }

                      }
          );
                      browser.addCloseWindowListener(
          new CloseWindowListener() {
                          
          public void close(WindowEvent event) {
                              Browser browser 
          = (Browser)event.widget;
                              Shell shell 
          = browser.getShell();
                              shell.close();
                          }

                      }
          );
                  }

              }


              
          /**
               * Disposes of all resources associated with a particular
               * instance of the BrowserApplication.
               
          */
              
              
          public void dispose() {
                  freeResources();
              }

              
              
          /**
               * Gets a string from the resource bundle.
               * We don't want to crash because of a missing String.
               * Returns the key if not found.
               
          */

              
          static String getResourceString(String key) {
                  
          try {
                      
          return resourceBundle.getString(key);
                  }
           catch (MissingResourceException e) {
                      
          return key;
                  }
           catch (NullPointerException e) {
                      
          return "!" + key + "!";
                  }
                      
              }

              
              
          public SWTError getError() return error; }
              
              
          public Browser getBrowser() return browser; }
              
              
          public void setShellDecoration(Image icon, boolean title) {
                  
          this.icon = icon;
                  
          this.title = title;
              }

              
              
          void show(boolean owned, Point location, Point size, boolean addressBar, boolean menuBar, boolean statusBar, boolean toolBar) {
                  
          final Shell shell = browser.getShell();
                  
          if (owned) {
                      
          if (location != null) shell.setLocation(location);
                      
          if (size != null) shell.setSize(shell.computeSize(size.x, size.y));
                  }

                  FormData data 
          = null;
                  
          if (toolBar) {
                      toolbar 
          = new ToolBar(parent, SWT.NONE);
                      data 
          = new FormData();
                      data.top 
          = new FormAttachment(05);
                      toolbar.setLayoutData(data);
                      itemBack 
          = new ToolItem(toolbar, SWT.PUSH);
                      itemBack.setText(getResourceString(
          "Back"));
                      itemForward 
          = new ToolItem(toolbar, SWT.PUSH);
                      itemForward.setText(getResourceString(
          "Forward"));
                      
          final ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH);
                      itemStop.setText(getResourceString(
          "Stop"));
                      
          final ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH);
                      itemRefresh.setText(getResourceString(
          "Refresh"));
                      
          final ToolItem itemGo = new ToolItem(toolbar, SWT.PUSH);
                      itemGo.setText(getResourceString(
          "Go"));
                      
                      itemBack.setEnabled(browser.isBackEnabled());
                      itemForward.setEnabled(browser.isForwardEnabled());
                      Listener listener 
          = new Listener() {
                          
          public void handleEvent(Event event) {
                              ToolItem item 
          = (ToolItem)event.widget;
                              
          if (item == itemBack) browser.back(); 
                              
          else if (item == itemForward) browser.forward();
                              
          else if (item == itemStop) browser.stop();
                              
          else if (item == itemRefresh) browser.refresh();
                              
          else if (item == itemGo) browser.setUrl(locationBar.getText());
                          }

                      }
          ;
                      itemBack.addListener(SWT.Selection, listener);
                      itemForward.addListener(SWT.Selection, listener);
                      itemStop.addListener(SWT.Selection, listener);
                      itemRefresh.addListener(SWT.Selection, listener);
                      itemGo.addListener(SWT.Selection, listener);

                      canvas 
          = new Canvas(parent, SWT.NO_BACKGROUND);
                      data 
          = new FormData();
                      data.width 
          = 24;
                      data.height 
          = 24;
                      data.top 
          = new FormAttachment(05);
                      data.right 
          = new FormAttachment(100-5);
                      canvas.setLayoutData(data);
                      
                      
          final Rectangle rect = images[0].getBounds();
                      canvas.addListener(SWT.Paint, 
          new Listener() {
                          
          public void handleEvent(Event e) {
                              Point pt 
          = ((Canvas)e.widget).getSize();
                              e.gc.drawImage(images[index], 
          00, rect.width, rect.height, 00, pt.x, pt.y);            
                          }

                      }
          );
                      canvas.addListener(SWT.MouseDown, 
          new Listener() {
                          
          public void handleEvent(Event e) {
                              browser.setUrl(getResourceString(
          "Startup"));
                          }

                      }
          );
                      
                      
          final Display display = parent.getDisplay();
                      display.asyncExec(
          new Runnable() {
                          
          public void run() {
                              
          if (canvas.isDisposed()) return;
                              
          if (busy) {
                                  index
          ++;
                                  
          if (index == images.length) index = 0;
                                  canvas.redraw();
                              }

                              display.timerExec(
          150this);
                          }

                      }
          );
                  }

                  
          if (addressBar) {
                      locationBar 
          = new Text(parent, SWT.BORDER);
                      data 
          = new FormData();
                      
          if (toolbar != null{
                          data.top 
          = new FormAttachment(toolbar, 0, SWT.TOP);
                          data.left 
          = new FormAttachment(toolbar, 5, SWT.RIGHT);
                          data.right 
          = new FormAttachment(canvas, -5, SWT.DEFAULT);            
                      }
           else {
                          data.top 
          = new FormAttachment(00);
                          data.left 
          = new FormAttachment(00);
                          data.right 
          = new FormAttachment(1000);            
                      }

                      locationBar.setLayoutData(data);
                      locationBar.addListener(SWT.DefaultSelection, 
          new Listener() {
                          
          public void handleEvent(Event e) {
                              browser.setUrl(locationBar.getText());
                          }

                      }
          );
                  }

                  
          if (statusBar) {
                      status 
          = new Label(parent, SWT.NONE);
                      progressBar 
          = new ProgressBar(parent, SWT.NONE);
                      
                      data 
          = new FormData();
                      data.left 
          = new FormAttachment(05);
                      data.right 
          = new FormAttachment(progressBar, 0, SWT.DEFAULT);
                      data.bottom 
          = new FormAttachment(100-5);
                      status.setLayoutData(data);
                      
                      data 
          = new FormData();
                      data.right 
          = new FormAttachment(100-5);
                      data.bottom 
          = new FormAttachment(100-5);
                      progressBar.setLayoutData(data);
                      
                      browser.addStatusTextListener(
          new StatusTextListener() {
                          
          public void changed(StatusTextEvent event) {
                              status.setText(event.text);    
                          }

                      }
          );
                  }

                  parent.setLayout(
          new FormLayout());

                  Control aboveBrowser 
          = toolBar ? (Control)canvas : (addressBar ? (Control)locationBar : null);
                  data 
          = new FormData();
                  data.left 
          = new FormAttachment(00);
                  data.top 
          = aboveBrowser != null ? new FormAttachment(aboveBrowser, 5, SWT.DEFAULT) : new FormAttachment(00);
                  data.right 
          = new FormAttachment(1000);
                  data.bottom 
          = status != null ? new FormAttachment(status, -5, SWT.DEFAULT) : new FormAttachment(1000);
                  browser.setLayoutData(data);
                      
                  
          if (statusBar || toolBar) {
                      browser.addProgressListener(
          new ProgressListener() {
                          
          public void changed(ProgressEvent event) {
                              
          if (event.total == 0return;                            
                              
          int ratio = event.current * 100 / event.total;
                              
          if (progressBar != null) progressBar.setSelection(ratio);
                              busy 
          = event.current != event.total;
                              
          if (!busy) {
                                  index 
          = 0;
                                  
          if (canvas != null) canvas.redraw();
                              }

                          }

                          
          public void completed(ProgressEvent event) {
                              
          if (progressBar != null) progressBar.setSelection(0);
                              busy 
          = false;
                              index 
          = 0;
                              
          if (canvas != null{
                                  itemBack.setEnabled(browser.isBackEnabled());
                                  itemForward.setEnabled(browser.isForwardEnabled());
                                  canvas.redraw();
                              }

                          }

                      }
          );
                  }

                  
          if (addressBar || statusBar || toolBar) {
                      browser.addLocationListener(
          new LocationListener() {
                          
          public void changed(LocationEvent event) {
                              busy 
          = true;
                              
          if (event.top && locationBar != null) locationBar.setText(event.location);
                          }

                          
          public void changing(LocationEvent event) {
                          }

                      }
          );
                  }

                  
          if (title) {
                      browser.addTitleListener(
          new TitleListener() {
                          
          public void changed(TitleEvent event) {
                              shell.setText(event.title
          +" - "+getResourceString("window.title"));
                          }

                      }
          );
                  }

                  parent.layout(
          true);
                  
          if (owned) shell.open();
              }


              
          /**
               * Grabs input focus
               
          */

              
          public void focus() {
                  
          if (locationBar != null) locationBar.setFocus();
                  
          else if (browser != null) browser.setFocus();
                  
          else parent.setFocus();
              }

              
              
          /**
               * Frees the resources
               
          */

              
          void freeResources() {
                  
          if (images != null{
                      
          for (int i = 0; i < images.length; ++i) {
                          
          final Image image = images[i];
                          
          if (image != null) image.dispose();
                      }

                      images 
          = null;
                  }

              }

              
              
          /**
               * Loads the resources
               
          */

              
          void initResources() {
                  
          final Class clazz = this.getClass();
                  
          if (resourceBundle != null{
                      
          try {
                          
          if (images == null{
                              images 
          = new Image[imageLocations.length];
                              
          for (int i = 0; i < imageLocations.length; ++i) {
                                  InputStream sourceStream 
          = clazz.getResourceAsStream(imageLocations[i]);
                                  ImageData source 
          = new ImageData(sourceStream);
                                  ImageData mask 
          = source.getTransparencyMask();
                                  images[i] 
          = new Image(null, source, mask);
                                  
          try {
                                      sourceStream.close();
                                  }
           catch (IOException e) {
                                      e.printStackTrace ();
                                  }

                              }

                          }

                          
          return;
                      }
           catch (Throwable t) {
                      }

                  }

                  String error 
          = (resourceBundle != null? getResourceString("error.CouldNotLoadResources") : "Unable to load resources";
                  freeResources();
                  
          throw new RuntimeException(error);
              }

              
              
          public static void main(String [] args) {
                  Display display 
          = new Display();
                  Shell shell 
          = new Shell(display);
                  shell.setLayout(
          new FillLayout());
                  shell.setText(getResourceString(
          "window.title"));
                  InputStream stream 
          = BrowserExample.class.getResourceAsStream(iconLocation);
                  Image icon 
          = new Image(display, stream);
                  shell.setImage(icon);
                  
          try {
                      stream.close();
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

                  BrowserExample app 
          = new BrowserExample(shell, true);
                  app.setShellDecoration(icon, 
          true);
                  shell.open();
                  
          while (!shell.isDisposed()) {
                      
          if (!display.readAndDispatch())
                          display.sleep();
                  }

                  icon.dispose();
                  app.dispose();
                  display.dispose();
              }

          }



          地震讓大伙知道:居安思危,才是生存之道。
          posted on 2007-07-09 21:52 小尋 閱讀(4708) 評論(6)  編輯  收藏 所屬分類: j2se/j2ee/j2me

          FeedBack:
          # re: 純Java寫的簡單瀏覽器代碼 速度勝過IE 2007-09-26 19:06 aaa
          你煞筆吧!SWT瀏覽器用的就是IE的內核,還說速度勝過IE?!  回復  更多評論
            
          # re: 純Java寫的簡單瀏覽器代碼 速度勝過IE[未登錄] 2007-09-26 21:35 尋覓
          呵呵,用過便知,有人就像有人說TT比IE好  回復  更多評論
            
          # re: 純Java寫的簡單瀏覽器代碼 速度勝過IE[未登錄] 2010-07-13 14:36 aa
          wu yu  回復  更多評論
            
          # re: 純Java寫的簡單瀏覽器代碼 速度勝過IE 2010-12-05 20:48 voyager
          錯的一塌糊涂  回復  更多評論
            
          # re: 純Java寫的簡單瀏覽器代碼 速度勝過IE[未登錄] 2010-12-07 13:06 小尋
          注意運行環境,不能少  回復  更多評論
            
          # re: 純Java寫的簡單瀏覽器代碼 速度勝過IE 2012-10-09 11:26 HXY
          哈哈,好好看看SWT的源碼,Eclipse都附帶的呢。SWT的Browser都是直接調用系統的瀏覽器,在不同的平臺調用不同的瀏覽器,SWT的Browser只是提供了些Java版的借口而已。在Windows上運行,其實就是IE。你真外行啊,哈哈哈哈哈哈。你唯一可以提速的只有你的界面代碼,而不是瀏覽器本身。  回復  更多評論
            
          主站蜘蛛池模板: 休宁县| 吴江市| 德兴市| 葫芦岛市| 茌平县| 壶关县| 奎屯市| 琼海市| 离岛区| 开封县| 龙南县| 师宗县| 桑日县| 额济纳旗| 临江市| 洪湖市| 青阳县| 抚顺市| 运城市| 抚远县| 昌江| 彰化县| 安岳县| 邵阳市| 农安县| 鹤庆县| 安远县| 霍林郭勒市| 色达县| 息烽县| 封丘县| 右玉县| 武宣县| 迁安市| 江油市| 通道| 常山县| 鹿邑县| 裕民县| 宜兰县| 柳河县|