final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("GCT2");
final Canvas canvas = new Canvas(shell, SWT.NONE);
canvas.setBounds(0, 0, 200, 200);
// shell必须在canvas之后,gc 之前open
shell.open();
GC gc = new GC(canvas);

gc.drawLine(0, 10, 140, 150);
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep(); }
这就是代码,谁能帮我解释下每行都是什么意思啊~
我想用SWT画图。不知道该在哪问,就在和问了,希望有懂的能帮帮忙,谢谢了~

解决方案 »

  1.   

      
    第2行:每个基于SWT的应用程序都有一个Display类的实例。用来将低层平台和SWT进行链接。除了管理SWT的事件循环,还能访问SWT需要的平台资源。在16行,display实例将会提交给垃圾收集器。   第3行:每一个窗口都有一个Shell窗口框架,来与用户进行交互。Shell像所有的windows系统一样来处理动作行为,并作为窗口控件的放置场所。   第4行: setText()方法设置窗口的标题.   第5行: setBounds() 方法设置窗口的大小和放置的位置. 在这个例子中, 设置窗口为200个像素宽,50个像素高,并放在离屏幕的左上角100x100像素的位置上。   第6行: setLayout()方法 设置窗口框架的布局. FillLayout,充满式布局管理器,使得组件大小会尽量的充满整个容器.SWT的布局管理器会在以后详细介绍。   第7行:在shell上新建一个简单的label组件并居中显示label的文本内容。   第8行: setText() 方法 设置label的文本内容。   第9行:创建一个红色的颜色类的实例。你也可以使用以下语句获得系统红色的实例:   Color red = display.getSystemColor(SWT.COLOR_RED);   第10行: setForeground() 方法 设置label的前景色   第11行:到目前为止,窗口框架还是不可见的。通过open()方法使得窗口可见。   第12行: while语句循环检测窗口有没有关闭。   第13行:display 控制事件的循环. readAndDispatch() 方法从平台的事件队列中读取事件,并分配他们到合适的处理程序(接收者)。只要队列中一直有事件可以处理,这个方法一直返回true,当事件队列为空时,则返回false(因此允许用户界面UI线程出于sleep状态直到事件队列不为空)。   第15,16行:当循环检测到窗口被关闭时,需要将color,display和一些相关联的平台资源释放。注意到系统颜色实例(colors)将会被提交释放。 
      

  2.   

    这里比较详细
    http://www.ibm.com/developerworks/cn/opensource/os-swt/
      

  3.   

    1 public static void main(String[] args) {
    2 Display display = new Display();
    3 Shell shell = new Shell(display);
    4 shell.setText( " Hello World " );
    5 shell.setBounds( 100 , 100 , 200 , 50 );
    6 shell.setLayout( new FillLayout());
    7 Label label = new Label(shell, SWT.CENTER);
    8 label.setText( " Hello World " );
    9 Color red = new Color(display, 255 , 0 , 0 );
    10 label.setForeground(red);
    11 shell.open();
    12 while ( ! shell.isDisposed()) {
    13 if ( ! display.readAndDispatch()) display.sleep();
    14 }
    15 red.dispose();
    16 display.dispose();
    17 }