`

SWT Browser

 
阅读更多
《Eclipse SWT/JFACE 核心应用》 清华大学出版社 9.12 浏览器

◆ CloseWindowListener:当关闭浏览器时所触发的事件。
◆ LocationListener:当浏览器转到另一个地址时所触发的事件。
◆ OpenWindowListener:当打开一个浏览器窗口时触发的事件。
◆ ProgressListener:当装载一个网页时进行的事件。
◆ StatusTextListener:当浏览器状态栏改变时触发的事件。
◆ TitleListener:当浏览器标题改变时触发的事件。
◆ VisibilityWindowListener:当浏览器窗口隐藏或显示时触发的事件。

package www.swt.com.ch9;

import org.eclipse.swt.layout.GridLayout;

public class SimpleSWTBrowser {

//定义浏览器的标题
public static final String APP_TITLE = "Simple SWT Browser";
//定义主页的url
public static final String HOME_URL = "http://www.eclipse.org/vep/";
//声明主窗口和其它控件
private org.eclipse.swt.widgets.Shell sShell = null;
private Button backButton = null;//后退按钮
private Button forwardButton = null;//前进按钮
private Button stopButton = null;//停止按钮
private Text locationText = null;//显示url的文本框
private Button goButton = null;//转向按钮
private Browser browser = null;//浏览器对象
private Button homeButton = null;//主页按钮
private Label statusText = null;//显示浏览器状态的文本框
private ProgressBar progressBar = null;//装载页面时的进度条
private Button refreshButton = null;//刷新按钮

//初始化浏览器
private void createBrowser() {
   org.eclipse.swt.layout.GridData gridData3 = new org.eclipse.swt.layout.GridData();
   //创建浏览器对象
   browser = new Browser(sShell, SWT.BORDER);
   gridData3.horizontalSpan = 7;
   gridData3.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
   gridData3.verticalAlignment = org.eclipse.swt.layout.GridData.FILL;
   gridData3.grabExcessVerticalSpace = true;
   //设置浏览器布局
   browser.setLayoutData(gridData3);
   //为浏览器注册标题改变事件
   browser.addTitleListener(new org.eclipse.swt.browser.TitleListener() {
    public void changed(org.eclipse.swt.browser.TitleEvent e) {
     sShell.setText(APP_TITLE + " - " + e.title);
    }
   });
   //为浏览器注册地址改变事件
   browser.addLocationListener(new org.eclipse.swt.browser.LocationListener() {
    public void changing(org.eclipse.swt.browser.LocationEvent e) {
     locationText.setText(e.location);
    }

    public void changed(org.eclipse.swt.browser.LocationEvent e) {
    }
   });
   //为浏览器注册装载网页事件
   browser.addProgressListener(new org.eclipse.swt.browser.ProgressListener() {
    //当装载时,设置装载的进度,并且设置停止按钮可用
    public void changed(org.eclipse.swt.browser.ProgressEvent e) {
     if (!stopButton.isEnabled() && e.total != e.current) {
      stopButton.setEnabled(true);
     }
     progressBar.setMaximum(e.total);
     progressBar.setSelection(e.current);
    }
    //装载完成后设置停止按钮,后退按钮,前进按钮和进度条的状态
    public void completed(org.eclipse.swt.browser.ProgressEvent e) {
     stopButton.setEnabled(false);
     backButton.setEnabled(browser.isBackEnabled());
     forwardButton.setEnabled(browser.isForwardEnabled());
     progressBar.setSelection(0);
    }
   });
   //注册浏览器状态改变事件
   browser.addStatusTextListener(new org.eclipse.swt.browser.StatusTextListener() {
    public void changed(org.eclipse.swt.browser.StatusTextEvent e) {
     statusText.setText(e.text);
    }
   });
   //初始状态打开主页的url
   browser.setUrl(HOME_URL);
}

public static void main(String[] args) {
   org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
   SimpleSWTBrowser thisClass = new SimpleSWTBrowser();
   thisClass.createSShell();
   thisClass.sShell.open();

   while (!thisClass.sShell.isDisposed()) {
    if (!display.readAndDispatch())
     display.sleep();
   }
   display.dispose();
}

//创建窗口和窗口的控件
private void createSShell() {
   sShell = new org.eclipse.swt.widgets.Shell();
   org.eclipse.swt.layout.GridLayout gridLayout1 = new GridLayout();
   org.eclipse.swt.layout.GridData gridData2 = new org.eclipse.swt.layout.GridData();
   org.eclipse.swt.layout.GridData gridData4 = new org.eclipse.swt.layout.GridData();
   org.eclipse.swt.layout.GridData gridData5 = new org.eclipse.swt.layout.GridData();
   org.eclipse.swt.layout.GridData gridData6 = new org.eclipse.swt.layout.GridData();
   org.eclipse.swt.layout.GridData gridData7 = new org.eclipse.swt.layout.GridData();
   org.eclipse.swt.layout.GridData gridData8 = new org.eclipse.swt.layout.GridData();
   backButton = new Button(sShell, SWT.ARROW | SWT.LEFT);
   forwardButton = new Button(sShell, SWT.ARROW | SWT.RIGHT);
   stopButton = new Button(sShell, SWT.NONE);
   refreshButton = new Button(sShell, SWT.NONE);
   homeButton = new Button(sShell, SWT.NONE);
   locationText = new Text(sShell, SWT.BORDER);
   goButton = new Button(sShell, SWT.NONE);
   createBrowser();
   progressBar = new ProgressBar(sShell, SWT.BORDER);
   statusText = new Label(sShell, SWT.NONE);
   sShell.setText(APP_TITLE);
   sShell.setLayout(gridLayout1);
   gridLayout1.numColumns = 7;
   backButton.setEnabled(false);
   backButton.setToolTipText("Navigate back to the previous page");
   backButton.setLayoutData(gridData6);
   forwardButton.setEnabled(false);
   forwardButton.setToolTipText("Navigate forward to the next page");
   forwardButton.setLayoutData(gridData5);
   stopButton.setText("Stop");
   stopButton.setEnabled(false);
   stopButton.setToolTipText("Stop the loading of the current page");
   goButton.setText("Go!");
   goButton.setLayoutData(gridData8);
   goButton.setToolTipText("Navigate to the selected web address");
   gridData2.grabExcessHorizontalSpace = true;
   gridData2.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
   gridData2.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER;
   locationText.setLayoutData(gridData2);
   locationText.setText(HOME_URL);
   locationText.setToolTipText("Enter a web address");
   homeButton.setText("Home");
   homeButton.setToolTipText("Return to home page");
   statusText.setText("Done");
   statusText.setLayoutData(gridData7);
   gridData4.horizontalSpan = 5;
   progressBar.setLayoutData(gridData4);
   progressBar.setEnabled(false);
   progressBar.setSelection(0);
   gridData5.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
   gridData5.verticalAlignment = org.eclipse.swt.layout.GridData.FILL;
   gridData6.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
   gridData6.verticalAlignment = org.eclipse.swt.layout.GridData.FILL;
   gridData7.horizontalSpan = 1;
   gridData7.grabExcessHorizontalSpace = true;
   gridData7.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
   gridData7.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER;
   gridData8.horizontalAlignment = org.eclipse.swt.layout.GridData.END;
   gridData8.verticalAlignment = org.eclipse.swt.layout.GridData.CENTER;
   refreshButton.setText("Refresh");
   refreshButton.setToolTipText("Refresh the current page");
   sShell.setSize(new org.eclipse.swt.graphics.Point(553, 367));
   //注册显示地址的文本框事件
   locationText.addMouseListener(new org.eclipse.swt.events.MouseAdapter() {
    public void mouseUp(org.eclipse.swt.events.MouseEvent e) {
     locationText.selectAll();
    }
   });
   locationText.addKeyListener(new org.eclipse.swt.events.KeyAdapter() {
    public void keyPressed(org.eclipse.swt.events.KeyEvent e) {
     // Handle the press of the Enter key in the locationText.
     // This will browse to the entered text.
     if (e.character == SWT.LF || e.character == SWT.CR) {
      e.doit = false;
      browser.setUrl(locationText.getText());
     }
    }
   });
   refreshButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
    public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
     browser.refresh();//重新载入
    }
   });
   locationText.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
    public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
     browser.setUrl(locationText.getText());//设置浏览器的指向的url
    }
   });
   stopButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
    public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
     browser.stop();//停止装载网页
    }
   });
   backButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
    public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
     browser.back();//后退
    }
   });
   forwardButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
    public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
     browser.forward();//前进
    }
   });
   homeButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
    public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
     browser.setUrl(HOME_URL);//设置主页
    }
   });
   goButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
    public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
     browser.setUrl(locationText.getText());//转向地址的网页
    }
   });
}
}
显示效果:


分享到:
评论

相关推荐

    SWT Browser(内嵌浏览器)所需SWTResourceManager Jar包

    SWT Browser(内嵌浏览器)所需SWTResourceManager Jar包

    SWT Browser浏览器小程序

    用SWT 组建实现一个简单的浏览器实例。具有搜索功能,

    SWT Browser jar文件下载(可导入Eclipse)

    导入Eclipse方法: 1.解压zip,找出2个jar文件,放入一个你想放的文件夹中 2.右键Eclipse中的工程,选择Build Path->Configure Build Path 3.选择Add External Jar,选择解压得到的2个jar即可

    在SWING、SWT中嵌入浏览器

    对于SWT中的`Browser`,可能还需要根据操作系统选择相应的 SWT 版本,因为SWT是高度平台依赖的。 2. 创建`Display`对象:这是SWT的主线程,负责处理所有GUI相关的操作。 3. 创建`Shell`对象:它是SWT窗口的基本...

    SWT(JFace)小制作 FileBrowser文件浏览

    代码如下: 代码如下:package swt_jface.demo6; import java.io.File; import java.util.Date; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics....

    swt 开发实例

    4. **配置SWT Browser**:在Eclipse中创建一个新的SWT项目,导入Browser组件,并设置其加载本地的FTL文件。 5. **Freemarker与Java的结合**:使用Freemarker API,将数据模型传递给模板并生成HTML字符串。 6. **...

    SWT开发的浏览器(Java)--源代码

    网页显示区域通常使用`Browser`控件,这是SWT专门为展示HTML内容设计的。`Browser`控件可以解析和渲染HTML,支持JavaScript执行,甚至能够处理一些复杂的Web技术,如iframe和Ajax。在源代码中,开发者会设置`Browser...

    SWT或Applet打开Office文件

    在SWT中,你可以使用 SWT Browser 组件来加载和显示HTML内容,甚至包括一些在线的Office文档预览。然而,直接通过SWT打开本地Office文件并不常见,通常需要借助第三方库,如Apache POI,来读取和操作Office文件内容...

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

    "demo eclipse工程实例"可能是一个包含示例代码的Eclipse工程,演示了如何在Java应用中使用SWT的Browser类创建内嵌浏览器。这为初学者提供了快速上手的起点,通过运行和修改示例代码,他们可以了解如何使用SWT来实现...

    java 用swt调用com组建之ie组建加强版

    1. **创建SWT Browser实例**:SWT提供了一个`Browser`类,可以用来创建一个ActiveX版本的浏览器实例,这在很多情况下等同于嵌入了一个IE实例。通过`Display`和`Shell`对象,我们可以设置浏览器的大小、位置以及其在...

    java 实现的图片浏览器

    在Java编程语言中实现一个图片浏览器涉及到多个技术领域和组件,包括图形用户界面(GUI)、文件操作、图像处理以及事件处理。以下是对这些知识点的详细解释: 1. **Swing或JavaFX**: Java提供两种主要的GUI库,用于...

    jxbrowser-7.8-cross-desktop-win_mac_linux.zip

    "browser"和"swt browser"再次强调了这个库的主要功能是提供浏览器服务,特别是对SWT的集成。"swing"则进一步确认了JxBrowser对Java Swing的支持。 压缩包内的文件名称列表: - "License agreement.txt"通常包含...

    HTML做UI的客户端-买卖精灵

    在这个项目中,JavaScript与Java之间的通信可能通过SWT Browser组件提供的API实现。JavaScript可以触发事件,而Java接收这些事件并执行相应的业务逻辑,再将结果返回给前端。这种方式允许开发者利用Java的稳定性和...

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

    "Browser"标签则明确指出了SWT的核心功能之一——浏览器功能,这是通过`org.eclipse.swt.browser.Browser`类提供的。这个类提供了加载URL、执行JavaScript、与网页内容交互等方法,使得开发者可以在Java应用程序中...

    svg图在各种浏览器中显示

    SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,它允许创建清晰、可缩放的图形,无论放大多少倍都不会失真。在Web开发中,SVG因其轻量级、灵活性和丰富的交互性而受到青睐。然而,不同的浏览器对SVG...

    xulrunner-2.0.en-US.win32.zip

    SWT Browser 利用 XULRunner 或其他浏览器引擎来展示网页内容,这样,开发者就可以在 Eclipse 插件或 RCP(Rich Client Platform)应用中集成现代的 Web 功能。 另一个标签 "FireFox",众所周知,是 Mozilla 的旗舰...

    eclipse cef browser 样例程序

    git 地址 https://github.com/maketechnology/chromium.swt

    用java robot实现超简单爬虫.doc

    7. **SWT Browser**:Java GUI组件,内嵌浏览器,支持代理,适合进行交互式爬虫开发。 针对描述中的需求,例如自动登录支付宝并完成支付,由于淘宝和支付宝的登录过程涉及多步重定向、JavaScript处理和可能的...

    WebBrowser执行JS脚本示例

    【实例简介】 涵盖了几种常用的 webBrowser执行javascript的方法, execScript方式: NavigateScript方式: 其中需要作如下设置 由于visual studio2005 中WebBrowser控件已经实现了IDocHostUIHandler,所以 ...

    org.eclipse.swt.win32

    org.eclipse.swt.browser.Browser.class org.eclipse.swt.browser.BrowserFactory.class org.eclipse.swt.browser.BrowserFunction.class org.eclipse.swt.browser.CloseWindowListener.class org.eclipse.swt....

Global site tag (gtag.js) - Google Analytics