形。 同时添加窗体变化的 Listener,通过绘制图片来设置窗体的背景。
清单 8. 设置窗体的背景
public void createWindowContents(final Shell shell) {
IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
//
page = configurer.createPageComposite(shell);
pageRegion = getBackRegionFromImage(shell.getDisplay(), pageImage, 0, 0);
ImageData pageData = pageImage.getImageData();
page.setRegion(pageRegion);
page.setBounds(45, 21, pageData.width, pageData.height);
//
Button startBt = new Button(shell, SWT.PUSH);
//startBtRegion = getBackRegionFromImage(shell.getDisplay(), startBtImage);
startBtRegion = new Region();
startBtRegion.add(circle(35, 40, 40));
ImageData startData = startBtImage.getImageData();
startBt.setRegion(startBtRegion);
startBt.setSize(startData.width+10, startData.height+10);
startBt.setLocation(575, 297);
startBt.setImage(startBtImage);
startBt.setToolTipText("Play media");
startBt.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e) {
// TODO Auto-generated method stub
String [] ext = {"*.AVI", "*.mp3", "*.*"};
FileDialog dlg = new FileDialog(shell, SWT.OPEN);
dlg.setText("Select Media...");
dlg.setFilterExtensions(ext);
String file = "file://" + dlg.open();
//
String editorID = "RCPDemo.mediaplay";
try {
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().openEditor(new MediaPlayerInput(file), editorID);
} catch (PartInitException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
//
Button exitBt = new Button(shell, SWT.PUSH);
exitRegion = getBackRegionFromImage(shell.getDisplay(), exitImage, 5, 5);
ImageData exitData = exitImage.getImageData();
exitBt.setRegion(exitRegion);
exitBt.setSize(exitData.width+10, exitData.height+10);
exitBt.setLocation(615, 350);
exitBt.setImage(exitImage);
exitBt.setToolTipText("Exit");
exitBt.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e) {
// TODO Auto-generated method stub
PlatformUI.getWorkbench().close();
}
});
}
这段代码是创建窗体上的控件,一个 video 播放 editor,一个播放按钮和一个退出按钮。video 播放 editor 是 Page 的一部分,而 Page 的外形通过图片来定义;一个播放按钮是通过一个文件对话框让用户来选择需要播放的 video 文件。
通过上面的介绍,我们可以看到,SWT/RCP 是一个非常优秀的应用界面 SDK,不光可以编写经典的窗体,还可以编写漂亮的多边形窗体及控件。希望读者通过本文的介绍,多使用 SWT/RCP |