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

开发Eclipse自定义控件

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: 这里要注意的是从PaintEvent中获取的x,y,height,width是需要重绘的区域,x,y是以控件的左上角为原点的坐标,开发Eclipse自定义控件(3),在我们的程序中,为了性能起见,如果选择项已经到了列表的顶部,我们还需要同时滚动滚动条,我们先根据需要重绘的区域计算出需要重绘的行数

这里要注意的是从PaintEvent中获取的x,y,height,width是需要重绘的区域,x,y是以控件的左上角为原点的坐标。在我们的程序中,为了性能起见,我们先根据需要重绘的区域计算出需要重绘的行数,只重绘相应的行,而不是将整个控件重绘。我们程序中用到的onPaint用于绘制一行。

接下来,我们要让我们的控件响应键盘上下键对列表项进行选择。我们已对向上键的处理为例,首先当用户按了向上键时,我们需要改变选择,并且重绘旧的和新的选择项。如果选择项已经到了列表的顶部,我们还需要同时滚动滚动条。

 addListener(SWT.KeyDown, new Listener() { 
  public void handleEvent(Event event) { 
  switch (event.keyCode) { 
  case SWT.ARROW_UP: // 处理向上键 
   if (rowSel != 0) { 
   oldRowSel = rowSel; 
   rowSel--; 
   if (oldRowSel != rowSel) { //发送消息让控件重绘 
    ((Canvas) event.widget).redraw(cx, (rowSel + cy 
     / lineHeight) 
     * lineHeight, maxX, lineHeight*2, false); 
   } 
   if (rowSel < -cy / lineHeight) { //如果需要,滚动滚动条 
    ScrollBar bar = ((Canvas) event.widget) 
     .getVerticalBar(); 
    bar.setSelection(bar.getSelection() - lineHeight); 
    scrollVertical(bar); 
   } 
   selectionChanged(); // 发送selectionChanged事件 
   } 
   break; 
  case SWT.ARROW_DOWN: // down arror key 
   … 
   break; 
  } 
  } 
 }); 

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

Tags:开发 Eclipse 定义

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