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

开发Eclipse自定义控件

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: 接下来,我们要让我们的控件响应鼠标对列表项进行选择,开发Eclipse自定义控件(4),首先我们要计算出鼠标选中的行号,注意MouseEvent中的y值只是相对于控件左上角的坐标,选中的列表项需要有虚框表示控件得到焦点,当获得或失去焦点是,我们需要加上滚动出了控件的部分,addMouseList

接下来,我们要让我们的控件响应鼠标对列表项进行选择。首先我们要计算出鼠标选中的行号,注意MouseEvent中的y值只是相对于控件左上角的坐标,我们需要加上滚动出了控件的部分。

 addMouseListener(new MouseListener() { 
  public void mouseDoubleClick(MouseEvent e) { 
  } 
  public void mouseDown(MouseEvent e) { 
  int row = (e.y - cy) / lineHeight; //计算选中的行 
  if (row >= 0) { 
   oldRowSel = rowSel; 
   rowSel = row; 
  } 
  if (oldRowSel != rowSel) { // 重画旧的和新的选择项 
   ((Canvas) e.getSource()).redraw(cx, (e.y / lineHeight) 
    * lineHeight, maxX, lineHeight, false); 
   ((Canvas) e.getSource()).redraw(cx, (oldRowSel + cy 
    / lineHeight) 
    * lineHeight, maxX, lineHeight, false); 
  } 
  selectionChanged(); 
  } 
  public void mouseUp(MouseEvent e) { 
  } 
 }); 

当我们的控件获得焦点时,选中的列表项需要有虚框表示控件得到焦点。当获得或失去焦点是,我们这里只需要简单的通知选中的项重画。

 addFocusListener(new FocusListener() { 
  public void focusGained(FocusEvent e) { 
  ((Canvas) e.getSource()).redraw(cx, rowSel * lineHeight, maxX, 
   lineHeight, true); 
  } 
  public void focusLost(FocusEvent e) { 
  ((Canvas) e.getSource()).redraw(cx, rowSel * lineHeight, maxX, 
   lineHeight, true); 
  } 
 }); 

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

Tags:开发 Eclipse 定义

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