WEB开发网
开发学院软件开发Java 开发Eclipse自定义控件 阅读

开发Eclipse自定义控件

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: addTraverseListener(newTraverseListener(){publicvoidkeyTraversed(TraverseEvente){if(e.detail==SWT.TRAVERSE_TAB_NEXT||e.detail==SWT.TRAVERSE_TAB_PREV

addTraverseListener(new TraverseListener() { 
  public void keyTraversed(TraverseEvent e) { 
  if (e.detail == SWT.TRAVERSE_TAB_NEXT 
   || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) { 
   e.doit = true; 
  } 
  }; 
 }); 

很多时候,我们需要有滚动条的支持。对于滚动条,我们只要在上面加上selectionListener,处理它的widgetSelected事件就可以。

bar = getVerticalBar(); 
 if (bar != null) { 
  bar.addSelectionListener(new SelectionAdapter() { 
  public void widgetSelected(SelectionEvent event) { 
   scrollVertical((ScrollBar) event.widget); 
  } 
  }); 
 } 

下面是函数scrollVertical的代码。一旦用户对滚动条操作,我们就可以计算出要滚动的区域,然后调用scroll函数。对函数scroll函数的调用会导致相应区域的重绘。

void scrollVertical(ScrollBar scrollBar) { 
 Rectangle bounds = getClientArea(); 
 int y = -scrollBar.getSelection(); 
 if (y + maxY < bounds.height) { 
  y = bounds.height - maxY; 
 } 
 if( y%lineHeight !=0 ) 
  y = y - y % lineHeight - lineHeight; 
 scroll(cx, y, cx, cy, maxX, maxY, false); 
 cy = y; 
 } 

现在我们的程序已经基本成形了,我们来进一步完善它。由于我们开发的控件是提供给程序员的,我们需要提供接口,让外部知道控件中发生的事件。其中最重要的是列表项的选中事件。我们需要提供接口让程序员能够添加事件监控器(listener)来监控发生的事件,并且一旦发生事件,我们需要通知监控器。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:开发 Eclipse 定义

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