SWT(JFace) 简易浏览器 制作实现代码

 更新时间:2009年06月25日 11:34:12   作者:  
SWT(JFace) 简易浏览器 制作实现代码

再看一个好一点的实现:
SWTBrowser.java
复制代码 代码如下:

package swt_jface.demo8;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
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.TitleEvent;
import org.eclipse.swt.browser.TitleListener;
import org.eclipse.swt.browser.VisibilityWindowListener;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
public class SWTBrowser {

Display display = new Display();
Shell shell = new Shell(display);
Text textLocation;
Browser browser;
Label labelStatus;
public SWTBrowser() {

shell.setLayout(new GridLayout());
ToolBar toolBar = new ToolBar(shell, SWT.FLAT | SWT.RIGHT);
final ToolBarManager manager = new ToolBarManager(toolBar);
Composite compositeLocation = new Composite(shell, SWT.NULL);
compositeLocation.setLayout(new GridLayout(3, false));
compositeLocation.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label labelAddress = new Label(compositeLocation, SWT.NULL);
labelAddress.setText("Address");
textLocation = new Text(compositeLocation, SWT.SINGLE | SWT.BORDER);
textLocation.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Button buttonGo = new Button(compositeLocation, SWT.NULL);
buttonGo.setImage(new Image(shell.getDisplay(), "C:/icons/web/go.gif"));
browser = new Browser(shell, SWT.BORDER);
browser.setLayoutData(new GridData(GridData.FILL_BOTH));
Composite compositeStatus = new Composite(shell, SWT.NULL);
compositeStatus.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
compositeStatus.setLayout(new GridLayout(2, false));
labelStatus = new Label(compositeStatus, SWT.NULL);
labelStatus.setText("Ready");
labelStatus.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
final ProgressBar progressBar = new ProgressBar(compositeStatus, SWT.SMOOTH);
Listener openURLListener = new Listener() {
public void handleEvent(Event event) {
browser.setUrl(textLocation.getText());
}
};
buttonGo.addListener(SWT.Selection, openURLListener);
textLocation.addListener(SWT.DefaultSelection, openURLListener);
final Action actionBackward =
new Action(
"&Backword",
ImageDescriptor.createFromFile(
null,
"C:/icons/web/backward.gif")) {
public void run() {
browser.back();
}
};
actionBackward.setEnabled(false);
final Action actionForward =
new Action(
"&Forward",
ImageDescriptor.createFromFile(
null,
"C:/icons/web/forward.gif")) {
public void run() {
browser.forward();
}
};
actionForward.setEnabled(false);
Action actionStop =
new Action(
"&Stop",
ImageDescriptor.createFromFile(null, "C:/icons/web/stop.gif")) {
public void run() {
browser.stop();
}
};
Action actionRefresh =
new Action(
"&Refresh",
ImageDescriptor.createFromFile(
null,
"C:/icons/web/refresh.gif")) {
public void run() {
browser.refresh();
}
};
Action actionHome =
new Action(
"&Home",
ImageDescriptor.createFromFile(null, "C:/icons/web/home.gif")) {
public void run() {
browser.setUrl("http://www.eclipse.org");
}
};
manager.add(actionBackward);
manager.add(actionForward);
manager.add(actionStop);
manager.add(actionRefresh);
manager.add(actionHome);
manager.update(true);
toolBar.pack();
browser.addLocationListener(new LocationListener() {
public void changing(LocationEvent event) {
textLocation.setText(event.location);
}
public void changed(LocationEvent event) {
actionBackward.setEnabled(browser.isBackEnabled());
actionForward.setEnabled(browser.isForwardEnabled());
manager.update(false);
}
});
browser.addProgressListener(new ProgressListener() {
public void changed(ProgressEvent event) {
progressBar.setMaximum(event.total);
progressBar.setSelection(event.current);
}
public void completed(ProgressEvent event) {
progressBar.setSelection(0);
}
});
browser.addStatusTextListener(new StatusTextListener() {
public void changed(StatusTextEvent event) {
labelStatus.setText(event.text);
}
});
browser.addTitleListener(new TitleListener() {
public void changed(TitleEvent event) {
shell.setText(event.title + " - powered by SWT");
}
});
initialize(display, browser);
shell.setSize(500, 400);
shell.open();
browser.setText("<html><body>" + "<h1>SWT & JFace </h1>" + "</body/html>");
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
static void initialize(final Display display, Browser browser) {
browser.addOpenWindowListener(new OpenWindowListener() {
public void open(WindowEvent event) {
Shell shell = new Shell(display);
shell.setText("New Window");
shell.setLayout(new FillLayout());
Browser browser = new Browser(shell, SWT.NONE);
initialize(display, browser);
event.browser = browser;
}
});
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));
}
shell.open();
}
});
browser.addCloseWindowListener(new CloseWindowListener() {
public void close(WindowEvent event) {
Browser browser = (Browser) event.widget;
Shell shell = browser.getShell();
shell.close();
}
});
}
public static void main(String[] args) {
new SWTBrowser();
}
}

相关文章

  • java实现TCP socket和UDP socket的实例

    java实现TCP socket和UDP socket的实例

    这篇文章主要介绍了本文主要介绍了java实现TCP socket和UDP socket的实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Java使用XML与注解方式实现CRUD操作代码

    Java使用XML与注解方式实现CRUD操作代码

    MyBatis提供了灵活的配置和使用方式,使得数据库操作更加简洁和高效,通过本文,我们介绍了如何使用MyBatis框架,通过XML映射文件和注解两种方式来实现数据库的增删改查操作,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • Mybatis-Plus注入SQL原理分析

    Mybatis-Plus注入SQL原理分析

    本文主要介绍了Mybatis-Plus注入SQL原理分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 解决springboot项目不配置数据源启动报错问题

    解决springboot项目不配置数据源启动报错问题

    这篇文章主要介绍了解决springboot项目不配置数据源启动报错问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 使用Mybatis遇到的there is no getter异常

    使用Mybatis遇到的there is no getter异常

    这篇文章主要介绍了使用Mybatis遇到的there is no getter异常,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Java 由浅入深带你掌握图的遍历

    Java 由浅入深带你掌握图的遍历

    图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。遍历过程中得到的顶点序列称为图遍历序列
    2022-03-03
  • 详解spring cloud分布式日志链路跟踪

    详解spring cloud分布式日志链路跟踪

    这篇文章主要介绍了详解spring cloud分布式日志链路跟踪,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • java时间格式的简单整理

    java时间格式的简单整理

    这篇文章主要介绍了java时间格式的简单整理,文中通过示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考一下
    2019-06-06
  • Java生成随机数的2种示例方法代码

    Java生成随机数的2种示例方法代码

    在Java中,生成随机数有两种方法。1是使用Random类。2是使用Math类中的random方法。看下面的例子使用吧
    2013-11-11
  • Java中的大数类简单实现

    Java中的大数类简单实现

    这篇文章主要介绍了Java中的大数类简单实现的相关资料,需要的朋友可以参考下
    2017-03-03

最新评论