WEB开发网
开发学院软件开发Java 定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP ... 阅读

定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP 界面

 2010-04-26 00:00:00 来源:WEB开发网   
核心提示: 定制 RCP 窗体外形前,Shell 对象已经初始化,定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP 界面(10),所以我们只能是在窗体创建后,设置 RCP 窗体外形跟前面的 SWT 程序一样简单,我们可以制作一个界面美观的媒体播放器 :图 12. 媒体播放器实例的部分代码如下:

定制 RCP 窗体外形前,Shell 对象已经初始化,所以我们只能是在窗体创建后。设置 RCP 窗体外形跟前面的 SWT 程序一样简单,首先通过通过窗体配置参数获得当前窗体 Shell 的引用,然后定义一个外形 Region,使用这个外形设置窗体就成。

窗体中的部件的外形定制跟其他的 Control 一样,先创建图形,然后使用图形设置 Control 外形。需要注意的是我们需要定义好 Control 的位置,因为父子部件是一层层叠加的,最顶层的部件可能会覆盖其父部件的外形。

通过定制多边形外形,我们可以制作一个界面美观的媒体播放器 :

图 12. 媒体播放器
定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP 界面

实例的部分代码如下:

 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); 
  // 
 } 

上一页  5 6 7 8 9 10 

Tags:定制 SWT RCP

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接