SWT浏览器设计
来源:互联网 发布:怎样写好钢笔字 知乎 编辑:程序博客网 时间:2024/06/04 19:55
SWT浏览器设计
先赞一下swt,正是有了它很多东西才这么简单。
废话不多说,先介绍下几个基本情况。由于swt可以使用了系统的资源,所以你在window下使用的浏览器的内核实际上就是ie,这样好处是很大的,比如显示就不会有什么问题,处理js、css也不会有什么大碍 。
收藏夹也可以直接使用ie的,不过为了区分我没有这样做。
主要几个需要处理的地方:
1、 新窗口打开。
有的网页是用_blank来打开的,还有的用户会右键新窗口打开,所以必须处理下,默认的情况是用系统默认浏览器打开。
具体的方法可以参考:
//为浏览器加入打开新窗口事件
browser.addOpenWindowListener(new OpenWindowListener() {
public void open(final WindowEvent e) {
//新建一个窗口
Shell shell = new Shell();
//初始化这个窗口,并将事件e当做参数传给它
createContents(shell, e);
//打开新窗口
shell.open();
shell.layout();
}
});
if (e == null) {
//如果传来的窗口事件为空,那么意味着是第一次打开,就打开设置的主页
setHomePage(browser);
} else {
//如果不为空则打开你想要打开的页面
e.browser = browser;
}
关键是e.browser = browser;这句话,将e的事件用我的浏览器打开。
2、 前进后退实现。
我是用了两个堆栈分别保存前进后退的,当前页不在堆栈中,点击前进后退分别处理。
以下为参考代码:
bBack.setText("后退");
bBack.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (!back.isEmpty()) {
String url = back.pop();
forward.push(browser.getUrl());
browser.setUrl(url);
}
checkEnable(back, bBack, forward, bGo);
}
});
bBack.setEnabled(false);
//前进
bGo.setText("前进");
bGo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
//如果前进栈不为空,那么定点出栈,将定点 设置为当前页,将当前页入后退栈
if (!forward.isEmpty()) {
String url = forward.pop();
back.push(browser.getUrl());
browser.setUrl(url);
}
checkEnable(back, bBack, forward, bGo);
}
});
bGo.setEnabled(false);
public void checkEnable(Stack<String> back, ToolItem bBack,
Stack<String> forward, ToolItem bForward) {
if (back.isEmpty()) {
bBack.setEnabled(false);
}
if (!forward.isEmpty()) {
bForward.setEnabled(true);
}
if (forward.isEmpty()) {
bForward.setEnabled(false);
}
if (!back.isEmpty()) {
bBack.setEnabled(true);
}
}
3、 网页的保存。
时间和能力有限,这边我是比较省略了,参考网上某些大牛的写法,还是可以实现ie的全部功能的,甚至可以保存成mht的归档文件。
我是直接保存了网页的html代码就过了哦。
参考代码:
final MenuItem saveAs = new MenuItem(menu_1, SWT.NONE);
saveAs.setText("另存为..");
saveAs.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
FileDialog save = new FileDialog(shell, SWT.SAVE);
save.setFilterExtensions(new String[] { "*.htm,*.html" });
save.setFileName(shell.getText());
String path;
if ((path = save.open()) != null) {
if (!path.endsWith(".htm") && !path.endsWith(".html")
&& !path.endsWith(".HTM")
&& !path.endsWith(".HTML")) {
path += ".html";
}
try {
BufferedWriter out = new BufferedWriter(new FileWriter(
path));
out.write(browser.getText());
out.close();
} catch (Exception ee) {
ee.printStackTrace();
}
}
}
});
4、 收藏夹、历史的实现
没有使用window里面的fav文件夹,我是直接保存进access的,很简单,这里就不献丑了。
下面是全部的代码打包,要调试的话可能需要你另外加上swt包了,顺便说下我是用了swtdesigner6.7进行gui设计的,可能需要安装才能调试代码。
下载地址:http://www.uushare.com/user/nevergiveup23/file/1236513
- SWT浏览器设计
- swt编写的浏览器
- java swt 打开浏览器
- 《java-SWT浏览器实现》
- SWT-套用IE浏览器代码
- SWT Browser(内嵌浏览器)
- SWT Browser(内嵌浏览器)
- SWT:关于UI设计
- SWT的底层设计
- SWT可视化设计
- [Eclipse笔记]SWT设计思路
- elipse可视化设计之SWT
- SWT(JFace)小制作:简易浏览器
- SWT(JFace)小制作:图片浏览器
- 基于swt和xml的java浏览器
- SWT/Jface TreeViewer例子-实现文件浏览器
- SWT
- SWT
- Linux数据库网络开发平台构建备忘录
- WinCE内核裁减(中文字体)及字库和内核的分离
- for shell 处理
- c#中委托是啥样的?
- 我是码客,P客,飘客,接客,代客,码客,乘客,普客
- SWT浏览器设计
- 常用的匹配正则表达式和实例
- 什么是Web 2.0:下一代软件的设计模式和商业模型
- Gridview相关颜色显示(满足特定数据要求的颜色显示,高亮显示)
- C#使用参数化和块语句来提高批处理SQL语句的执行效率
- Java Applet缓存
- C++ primer 摘要《函数重载》20090120
- 使用pgAdim3对PostgreSQL数据库导入导出
- '0x0a ', '0x0d ' : "/n"&"/r"