定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP 界面
2010-04-26 00:00:00 来源:WEB开发网定制 RCP 窗体外形前,Shell 对象已经初始化,所以我们只能是在窗体创建后。设置 RCP 窗体外形跟前面的 SWT 程序一样简单,首先通过通过窗体配置参数获得当前窗体 Shell 的引用,然后定义一个外形 Region,使用这个外形设置窗体就成。
窗体中的部件的外形定制跟其他的 Control 一样,先创建图形,然后使用图形设置 Control 外形。需要注意的是我们需要定义好 Control 的位置,因为父子部件是一层层叠加的,最顶层的部件可能会覆盖其父部件的外形。
通过定制多边形外形,我们可以制作一个界面美观的媒体播放器 :
图 12. 媒体播放器
实例的部分代码如下:
public void preWindowOpen() {
getWindowConfigurer().setShellStyle(
SWT.NO_TRIM | SWT.CENTER | SWT.NO_BACKGROUND);
}
首先是在窗体打开前设置窗体的风格,没有边界,没有背景。
清单 7. 设置窗体风格
public void postWindowCreate() {
IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
//
final Shell shell = configurer.getWindow().getShell();
backRegion = getBackRegionFromImage(shell.getDisplay(), backImage, 0, 0);
ImageData data = backImage.getImageData();
shell.setRegion(backRegion);
shell.setSize(data.x+data.width, data.y+data.height);
//
Listener listener = new Listener() {
int startX, startY;
public void handleEvent(Event e) {
if (e.type == SWT.MouseDown && e.button == 1) {
startX = e.x;
startY = e.y;
}
if (e.type == SWT.MouseMove && (e.stateMask & SWT.BUTTON1) != 0) {
Point p = shell.toDisplay(e.x, e.y);
p.x -= startX;
p.y -= startY;
shell.setLocation(p);
}
if (e.type == SWT.Paint) {
ImageData data = backImage.getImageData();
e.gc.drawImage(backImage, data.x, data.y);
}
}
};
shell.addListener(SWT.MouseDown, listener);
shell.addListener(SWT.MouseMove, listener);
shell.addListener(SWT.Paint, listener);
//
}
- ››定制个性化的对话框窗口类
- ››定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP ...
- ››定制基于 Visual studio 2005 平台 Windows CE(AR...
- ››定制版黑雨 blackra1n 越狱3.1.2 全系 iPhone
- ››RCP客户端实现保存不同用户的界面状态
- ››定制 Eclipse RCP 应用程序,第 1 部分: 可与 SWT...
- ››SWT 全接触
- ››定制AIX操作系统的shell环境
- ››定制任务栏上的系统菜单
- ››SWT/JFace开发入门指南之搭建开发环境
- ››定制一个灵活的struts框架
- ››RCPII:扩展通用工作台补充—小的改进
更多精彩
赞助商链接