知识大全 开发Eclipse下的自定义控件[2]

Posted

篇首语:勤奋是你生命的密码,能译出你一部壮丽的史诗。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 开发Eclipse下的自定义控件[2]相关的知识,希望对你有一定的参考价值。

开发Eclipse下的自定义控件[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

addPaintListener(new PaintListener() public void paintControl(PaintEvent e) GC gc = e gc;Point size = getSize();int beginx = e x;int beginy = (e y / lineHeight) * lineHeight;int beginLine = (e y cy) / lineHeight;int endLine = beginLine + e height / lineHeight + ;if (endLine > getItemCount())endLine = getItemCount();for (int i = beginLine; i < endLine; i++) boolean selected = false;if (i == rowSel)selected = true;onPaint(gc i cx beginy + (i beginLine) * lineHeight selected););

  这里要注意的是从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 != ) oldRowSel = rowSel;rowSel ;if (oldRowSel != rowSel) //发送消息让控件重绘((Canvas) event widget) redraw(cx (rowSel + cy/ lineHeight)* lineHeight maxX lineHeight* 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;);

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

cha138/Article/program/Java/ky/201311/28985

相关参考

知识大全 开发Eclipse下的自定义控件[5]

开发Eclipse下的自定义控件[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!publicv

知识大全 开发Eclipse下的自定义控件[6]

开发Eclipse下的自定义控件[6]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!publicv

知识大全 开发Eclipse下的自定义控件[1]

开发Eclipse下的自定义控件[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文首先介

知识大全 开发Eclipse下的自定义控件[4]

开发Eclipse下的自定义控件[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作为一个可

知识大全 技术分享——开发Eclipse自定义控件

技术分享——开发Eclipse自定义控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  现在基于

知识大全 使用ASP.Net中的自定义控件[2]

使用ASP.Net中的自定义控件[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件

使用ASP.Net中的自定义控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  if((data

知识大全 使用ASP.Net中的自定义控件[4]

使用ASP.Net中的自定义控件[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[5]

使用ASP.Net中的自定义控件[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[7]

使用ASP.Net中的自定义控件[7]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &