您现在的位置是:首页 >

winform自定义控件列表 开发Eclipse下的自定义控件[4]

火烧 2021-07-14 08:30:58 1060
开发Ecli e下的自定义控件[4]   作为一个可操作的控件 TAB键的支持也是很重要的 由于我们的控件是从Ca va 继承过来的 不支持TAB键 下面的代码使我们的控件有TAB键的支持 addTr

开发Eclipse下的自定义控件[4]  

  作为一个可操作的控件 TAB键的支持也是很重要的 由于我们的控件是从Canvas继承过来的 不支持TAB键 下面的代码使我们的控件有TAB键的支持

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

winform自定义控件列表 开发Eclipse下的自定义控件[4]

  很多时候 我们需要有滚动条的支持 对于滚动条 我们只要在上面加上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 != )y = y y % lineHeight lineHeight;scroll(cx y cx cy maxX maxY false);cy = y;}

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

首先 我们添加一个成员来保存添加的事件监控器

Vector selectionListeners = new Vector();

  我们再增加一个函数addSelectionListener 让程序员可以添加监控器

public void addSelectionListener(SelectionListener listener) {selectionListeners addElement(listener);}

  在我们前面的代码中 我们注意到每次选择项改变 我们都会调用selectionChanged函数 下面是selectionChanged函数代码 这里 我们会生成一个SelectionEvent事件 并且逐个调用事件监控器的widgetSelected方法 这样别人就可以监听到我们的事件了

lishixinzhi/Article/program/Java/ky/201311/28982  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码