`
wangzi6hao
  • 浏览: 211838 次
  • 性别: Icon_minigender_1
  • 来自: sdf
社区版块
存档分类
最新评论

基于eclipse swt做java浏览器内嵌等功能

    博客分类:
  • Java
阅读更多

swt-3.5M4-win32-win32-x86.zip 包下载地址: http://download.csdn.net/source/921856

csdn上有些朋友说我这个是骗人的包。我无语。几个dome,你们自己去看吧。别不会用就说我人品有问题。

import java.util.ArrayList;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.OpenWindowListener;
import org.eclipse.swt.browser.VisibilityWindowListener;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

public class BrowserTest1 {
static final ArrayList urls = new ArrayList(); // @jve:decl-index=0:
static boolean canRemove = false;
public static void main(String[] args) {
      Display display = new Display();
      Shell shell = new Shell(display);
      shell.setText("jog36行业招聘");
      Image image = new Image(shell.getDisplay(), "Favicon.ico");
      shell.setImage(image);
      shell.setLayout(new FillLayout());
      Browser browser = new Browser(shell, SWT.NONE);
      initialize(display, browser);
      shell.open();
      browser.setUrl("www.job36.com");
      while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
          display.sleep();
      }
      display.dispose();
}

static void initialize(final Display display, Browser browser) {
      browser.addListener(SWT.MouseDown, new Listener() {
        public void handleEvent(Event event) {
          System.out.println("event.time:" + event.time);
        }
      });
      browser.addOpenWindowListener(new OpenWindowListener() {
        public void open(WindowEvent event) {
          // Embed the new window
          final Shell shell = new Shell(display);
          shell.setText("New Window");
          shell.setLayout(new FillLayout());
          final Browser browser = new Browser(shell, SWT.NONE);
          initialize(display, browser);
          event.browser = browser;
          event.display.asyncExec(new Runnable() {
              public void run() {
                String url = browser.getUrl();
                System.out.println(url);
                System.out.println(browser.getText());
                if (urls.contains(url)){
                  //flag to chek if the window is closed automatic
                  canRemove = false;
                  shell.close();
                }
                else{
                  canRemove = true;
                  urls.add(url);
                }
               
              }
          });
        }
      });
      browser.addVisibilityWindowListener(new VisibilityWindowListener() {
        public void hide(WindowEvent event) {
          Browser browser = (Browser) event.widget;
          Shell shell = browser.getShell();
          shell.setVisible(false);
        }

        public void show(WindowEvent event) {
          Browser browser = (Browser) event.widget;
          Shell shell = browser.getShell();
          if (event.location != null)
              shell.setLocation(event.location);
          if (event.size != null) {
              Point size = event.size;
              shell.setSize(shell.computeSize(size.x, size.y));
          }
          if (event.addressBar || event.menuBar || event.statusBar
                || event.toolBar) {
              // Create widgets for the address bar, menu bar, status bar and/or tool bar
              // leave enough space in the Shell to accomodate a Browser of the size
              // given by event.size
          }
          shell.open();
        }
      });
      browser.addDisposeListener(new DisposeListener(){
        public void widgetDisposed(DisposeEvent event){
          Browser browser = (Browser) event.widget;
          if (canRemove)
              urls.remove(browser.getUrl());
          Shell shell = browser.getShell();
         // shell.close();
        }
      });
}

}
 
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.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Label;
import org.eclipse.swt.widgets.Shell;

/**
* This class implements a web browser
*/
public class TestBrowser {
    // The "at rest" text of the throbber

    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 static final String AT_REST = "Ready";

    private String[] urlList = new String[256];

    int urlListItemCount = 0;

    /**
    * 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("Job36 行业招聘网 CRM系统");
        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(Shell shell, String location) {
        shell.setLayout(new FormLayout());

        // Create the composite to hold the buttons and text field

        Composite controls = new Composite(shell, SWT.NONE);
        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);

        // 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() {
            public void open(WindowEvent event) {
                Browser browsertest = (Browser)event.widget;
                final Shell shell = browser.getShell();
                System.out.println(null==browsertest?"为null":browsertest.getUrl());
//                String urlStr = event.browser.getUrl();
//                int flag = 1;
//                browser.setVisible(false);
//                browser2.setVisible(true);
//                event.browser = browser2;
//                for (int i = 0; i < urlListItemCount; i++) {
//                    if (urlList[i].equals(urlStr)) {
//                        flag = 0;
//                    }
//                }
//                if (flag == 1) {
//                    urlList[urlListItemCount] = 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(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);
                arg0.browser = browser;
                for (int i = 0; i < urlListItemCount; i++) {
                    if (urlList[i].equals(urlStr)) {
                        flag = 0;
                    }
                }
                if (flag == 1) {
                    urlList[urlListItemCount] = 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(100, 0);
        browser2.setLayoutData(data);

        // Create the controls and wire them to the browser

        controls.setLayout(new GridLayout(7, false));

        // Create the back button

        button_back = new Button(controls, SWT.PUSH);
        button_back.setText("后退");
        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("前进");
        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("刷新");
        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("停止");
        button_stop.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                browser.stop();
            }
        });

        // Create the address entry field and set focus to it

        url = new Combo(controls, SWT.ARROW_DOWN);
        url.setLayoutData(new GridData(296, SWT.DEFAULT));
        url.setSize(600, url.getSize().y);
        url.setFocus();

        // Create the go button

        button = new Button(controls, SWT.PUSH);
        button.setText("Go");
        button.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                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;
                    url.add(urlStr);
                    urlListItemCount++;
                }
            }
        });

        // Create the animated "throbber"

        throbber = new Label(controls, SWT.NONE);
        throbber.setText(AT_REST);

        // 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) {
        new TestBrowser().run(args.length == 0 ? null : args[0]);
    }
}
 
分享到:
评论
5 楼 scd01234 2014-03-21  
可以运行了,感谢师兄的慈悲加护!阿弥陀佛
4 楼 poorzerg 2012-11-22  
很好,可以跑..谢谢了,我参考下..
3 楼 wangzi6hao 2011-12-13  
151813483 写道
挺好的,谢谢。

你够用就行,好久没有看过了,之前写的。多的功能你要自己看api了。呵呵。
2 楼 151813483 2011-10-28  
挺好的,谢谢。
1 楼 epinszteinic 2011-08-18  
不是dome,是demo

相关推荐

    Java内嵌浏览器eclipse.swt插件版

    在这个场景下,"Java内嵌浏览器eclipse.swt插件版"指的是使用SWT来实现Java应用程序中的内嵌浏览器功能。 SWT是Eclipse项目的一部分,设计用于替代Java Swing,提供更丰富的图形用户界面和更好的性能。它利用了操作...

    java内嵌浏览器DJNativeSwing的jar包 以及32位和64位的SWT

    Java内嵌浏览器技术是将网页内容在Java应用程序中展示的一种方式,这在处理与Web相关的功能或者需要在桌面应用中嵌入网页时非常有用。在这个场景中,DJNativeSwing和SWT(标准窗口工具包)是两个关键的库,它们帮助...

    java swing 内嵌浏览器

    总之,Java Swing内嵌浏览器通过第三方库如DJNativeSwing-SWT,可以方便地在Java桌面应用中嵌入一个功能完备且与操作系统紧密集成的浏览器,这极大地扩展了Java Swing应用的功能和交互可能性。在实际开发中,理解和...

    Java-Swing嵌入浏览器(本地浏览器和webkit浏览器-火狐内核)

    这个压缩包文件“Java-Swing嵌入浏览器(本地浏览器和webkit浏览器-火狐内核)”显然提供了一个实现这一功能的示例,主要涉及到的技术是DJnative-SWT和SWT。 DJnative-SWT 是一个开源项目,它的目标是将Java和...

    java内嵌浏览器

    Java内嵌浏览器是一种技术,...总结来说,这个Java内嵌浏览器项目通过结合SWT、JNA以及DJNativeSwing库,实现了在Java应用程序中无缝集成Web浏览功能,允许开发者创建具有强大网络功能的桌面应用,并且能够跨平台运行。

    DJNativeSwing-SWT组件-Java GUI中内嵌浏览器相关JAR包

    "djnativeswing-sw.jar"文件则是DJNativeSwing-SWT的实现,它实现了在SWT环境下内嵌浏览器的功能。"org.eclipse.swt."标签表明这些JAR包依赖于Eclipse SWT库,这是实现原生浏览器控件的关键。 在使用这些JAR包时,...

    java swt浏览器64位插件

    总的来说,Java SWT浏览器64位插件对于那些需要在Java应用中内嵌浏览器功能且运行在64位环境下的项目来说,是一个不可或缺的工具。通过合理使用,开发者可以构建出更加灵活、功能强大的桌面应用。在实际应用中,还...

    java内嵌浏览器源码.doc

    在Java中实现内嵌浏览器,我们可以利用Eclipse SWT(Standard Widget Toolkit)库中的`Browser`类。以下是一个关于如何使用SWT创建内嵌浏览器的详细说明: 1. **引入依赖**: 首先,你需要在项目中引入SWT库。对于...

    org.eclipse.swt相关所有jar包,

    【标题】"org.eclipse.swt相关所有jar包"涵盖了用于JAVA应用程序与浏览器集成的关键库 【描述】中的"org.eclipse.swt"是指Eclipse Standard/Widgets工具包,这是一个开源的Java库,允许开发人员在多种平台上创建...

    eclipse swt包

    这个压缩包包含了支持Java浏览器内嵌功能的组件,这意味着开发者可以利用SWT来在他们的应用程序中集成Web浏览功能。 标签中的“eclipseswt”、“eclipse”和“swt api jar”进一步明确了这个包与Eclipse IDE的关系...

    java源码屏幕刷新-javacef:在JavaSWT中嵌入Chromium浏览器。(以前是code.google.com/p/javacef

    java源码屏幕刷新介绍 Java CEF 现在是 Jingyi Wei 的一个开源项目。 该项目可以在 Java SWT 中嵌入 Chromium 浏览器,支持多标签浏览器、cookie 操作、标签设置、打印、后退、前进、刷新按钮和增强的文件下载。 该...

    java集成webkit浏览器

    在Java中集成WebKit,开发者可以创建具有现代Web浏览功能的应用程序,比如内嵌式浏览器控件。 SWT(Standard Widget Toolkit)是Eclipse基金会开发的一个Java图形用户界面(GUI)工具包,它提供了与操作系统紧密集成...

    java swt javaFx 整合 自带浏览器 实现 调用网页echart

    SWT提供了一个`Browser`类,允许开发者在Java程序中内嵌一个Web浏览器组件。 **JavaFX** 是Oracle公司推出的新一代富客户端应用开发框架,它提供了丰富的UI控件、2D/3D图形渲染、动画和媒体处理等功能。JavaFX的`...

    SWT(DJNativeSwing)

    DJ NativeSwing是SWT的一个扩展,它允许开发者在Java应用程序中无缝地嵌入Swing组件,包括一个内嵌浏览器功能。 在Java编程中,SWT和Swing分别是两种主要的GUI库。SWT提供了与操作系统更直接的交互,而Swing则依赖...

    嵌入浏览器需要.rar

    "Swt嵌入浏览器"这一主题涉及到如何使用SWT库在Java应用中嵌入一个功能完整的浏览器引擎。 SWT是Eclipse基金会开发的一个开源GUI库,它允许Java开发者创建与本机系统更加紧密集成的图形用户界面。与传统的Java ...

    DJNativeSwing组件集含32 64位swt包

    总结来说,DJNativeSwing组件集是一个强大的工具,它让Java开发者能够在他们的应用程序中集成高性能的Web浏览器功能,无论应用程序是基于Swing还是SWT。配合32位和64位的SWT库,它可以覆盖广泛的操作系统环境,确保...

    DJ Native Swing内嵌浏览器实例

    1. **内嵌浏览器组件**:这个库的核心是内嵌浏览器组件,它可以在Java Swing或Eclipse SWT(标准小部件工具包)的应用程序中无缝使用。这使得开发者能够创建混合型应用程序,其中包含本地桌面功能和网页内容。 2. *...

    swt-4.4.2-win32-win32-x86_64.zip

    5. 利用SWT内嵌Mozilla浏览器:SWT提供了一个名为`Browser`的类,可以用来在Java应用中嵌入Web浏览器。这种功能允许开发者在自己的应用程序中展示网页内容,或者实现基于Web技术的组件,如HTML编辑器。 总的来说,...

    DJNativeSwing的jar包以及32和64的SWT

    DJNativeSwing是一款Java库,它为Java应用程序提供了一种集成原生系统界面,特别是内嵌浏览器功能的方式。这个库的出现解决了Java平台在显示Web内容时与原生操作系统交互的局限性,使得Java应用可以拥有更加现代和...

    Java 实现swing中嵌入html 实例 适合新手

    DJNativeSwing.jar是纯Swing实现,而DJNativeSwing-SWT.jar则利用了Eclipse的SWT库来增强功能,提供更好的渲染效果。 接下来,我们将探讨如何在Java项目中集成这些库。首先,将这两个JAR文件添加到项目的类路径中。...

Global site tag (gtag.js) - Google Analytics