《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 组建实现一个简单的浏览器实例。具有搜索功能,
导入Eclipse方法: 1.解压zip,找出2个jar文件,放入一个你想放的文件夹中 2.右键Eclipse中的工程,选择Build Path->Configure Build Path 3.选择Add External Jar,选择解压得到的2个jar即可
对于SWT中的`Browser`,可能还需要根据操作系统选择相应的 SWT 版本,因为SWT是高度平台依赖的。 2. 创建`Display`对象:这是SWT的主线程,负责处理所有GUI相关的操作。 3. 创建`Shell`对象:它是SWT窗口的基本...
代码如下: 代码如下: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....
4. **配置SWT Browser**:在Eclipse中创建一个新的SWT项目,导入Browser组件,并设置其加载本地的FTL文件。 5. **Freemarker与Java的结合**:使用Freemarker API,将数据模型传递给模板并生成HTML字符串。 6. **...
网页显示区域通常使用`Browser`控件,这是SWT专门为展示HTML内容设计的。`Browser`控件可以解析和渲染HTML,支持JavaScript执行,甚至能够处理一些复杂的Web技术,如iframe和Ajax。在源代码中,开发者会设置`Browser...
在SWT中,你可以使用 SWT Browser 组件来加载和显示HTML内容,甚至包括一些在线的Office文档预览。然而,直接通过SWT打开本地Office文件并不常见,通常需要借助第三方库,如Apache POI,来读取和操作Office文件内容...
"demo eclipse工程实例"可能是一个包含示例代码的Eclipse工程,演示了如何在Java应用中使用SWT的Browser类创建内嵌浏览器。这为初学者提供了快速上手的起点,通过运行和修改示例代码,他们可以了解如何使用SWT来实现...
1. **创建SWT Browser实例**:SWT提供了一个`Browser`类,可以用来创建一个ActiveX版本的浏览器实例,这在很多情况下等同于嵌入了一个IE实例。通过`Display`和`Shell`对象,我们可以设置浏览器的大小、位置以及其在...
在Java编程语言中实现一个图片浏览器涉及到多个技术领域和组件,包括图形用户界面(GUI)、文件操作、图像处理以及事件处理。以下是对这些知识点的详细解释: 1. **Swing或JavaFX**: Java提供两种主要的GUI库,用于...
"browser"和"swt browser"再次强调了这个库的主要功能是提供浏览器服务,特别是对SWT的集成。"swing"则进一步确认了JxBrowser对Java Swing的支持。 压缩包内的文件名称列表: - "License agreement.txt"通常包含...
在这个项目中,JavaScript与Java之间的通信可能通过SWT Browser组件提供的API实现。JavaScript可以触发事件,而Java接收这些事件并执行相应的业务逻辑,再将结果返回给前端。这种方式允许开发者利用Java的稳定性和...
"Browser"标签则明确指出了SWT的核心功能之一——浏览器功能,这是通过`org.eclipse.swt.browser.Browser`类提供的。这个类提供了加载URL、执行JavaScript、与网页内容交互等方法,使得开发者可以在Java应用程序中...
SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,它允许创建清晰、可缩放的图形,无论放大多少倍都不会失真。在Web开发中,SVG因其轻量级、灵活性和丰富的交互性而受到青睐。然而,不同的浏览器对SVG...
SWT Browser 利用 XULRunner 或其他浏览器引擎来展示网页内容,这样,开发者就可以在 Eclipse 插件或 RCP(Rich Client Platform)应用中集成现代的 Web 功能。 另一个标签 "FireFox",众所周知,是 Mozilla 的旗舰...
git 地址 https://github.com/maketechnology/chromium.swt
7. **SWT Browser**:Java GUI组件,内嵌浏览器,支持代理,适合进行交互式爬虫开发。 针对描述中的需求,例如自动登录支付宝并完成支付,由于淘宝和支付宝的登录过程涉及多步重定向、JavaScript处理和可能的...
【实例简介】 涵盖了几种常用的 webBrowser执行javascript的方法, execScript方式: NavigateScript方式: 其中需要作如下设置 由于visual studio2005 中WebBrowser控件已经实现了IDocHostUIHandler,所以 ...
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....