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

如题所述

  Java è‡ªä»Ž 1995 年发布以来,其图形界面一直为世人所诟病。无论是早期的 AWT,还是后来的 Swing 应用程序不能像本地应用程序一样执行,外观也不一样,响应的速度也不快。SWT 吸收了 AWT 和 Swing 实现的最好的部分 : 当可以得到本地组件时调用本地实现,当不能得到本地组件时使用 Java 实现。这就同时保证了与本地窗口部件相当的外观,又提高了响应速度。

  目前 SWT 已被广泛应用于开发 JAVA 富客户端,但是基于 SWT/RCP 的应用程序界面都是经典的 Eclipse 界面风格 : 蓝色的标题栏、灰色的工具栏和状态栏、四方形的视图和编辑器、还是四方的控件,这些界面过于朴素,缺乏吸引力。

  其实我们可以基于 SWT/RCP,编写漂亮 GUI 的界面。自定义窗口的形状,通过图片背景来美化 SWT/RCP 窗体界面。窗体可以是多边形,如矩形、圆形、以及这些形状的叠加。按钮控件也可以任意多边形。

  下图是经典的 Eclipse 风格界面和美化后界面的比较:左面是一个经典的 SWT/RCP 窗体界面;右面是美化后的窗体,黑色的外框由一个矩形和一个圆形的叠加而成、圆形的播放按钮、圆弧形的退出按钮、不规则的放映视图等。

  return rect;
 } 


  Region 类里面也提供了直接生成矩形的函数 add(Rectangle rect)和 add(int x, int y, int width, int height)。如果要生成不规则的窗体,如圆形,或者其他形状的窗体,Region 不直接提供函数,只能通过坐标数组来实现。

  如图所示,圆形是通过一组逆时针连接而成的点构成,各个点可以有园半径,圆心坐标推算而成。A1 的坐标是 (Xo-r, Yo). An 的 X 坐标是 XAn=Xo-r+n,Y 坐标是 YAn=Yo+R。

  生成圆形坐标数组的函数代码如下:

  清单 2. 生成圆形坐标数组的函数代码


  int[] circle(int r, int offsetX, int offsetY) {
  int[] ring = new int[8 * r + 4]; 
  // x^2 + y^2 = r^2 
  for (int i = 0; i < 2 * r + 1; i++) { 
   int x = i - r; 
   int y = (int) Math.sqrt(r * r - x * x); 
   ring [2 * i] = offsetX + x; 
   ring [2 * i + 1] = offsetY + y; 
   ring [8 * r - 2 * i - 2] = offsetX + x; 
   ring [8 * r - 2 * i - 1] = offsetY - y; 
  } 
  return ring; 
 } 


  来源: ibm   ä½œè€…:饶有清

温馨提示:答案为网友推荐,仅供参考
相似回答