TraverseListener介绍

转自:http://blog.sina.com.cn/s/blog_568c94a30100ppy6.html


TraverseListener:

它只有一个keyTraversed方法。当widget来回移动焦点,比如按下TAB或者向上和向下箭头按钮时,会调用此方法。
相对应的,会产生一个TraverseEvent对象。其中比较有用的属性时detail和doit。doit属性就和VerifyListener中的作用一样;它设置一个标记,指明事件该不该继续。detail属性指明了这是一个什么样的“来回事件”。你将会在SWT.TRAVERSE_XXXX这样的定义中找到不同的类型。
下面的例子中,你会看到我们比较TraverseEvent中detail的SWT.TRAVERSE_TAB_divVIOUS。如果有一个向前的tab(Soso said:比如按住Shift 按TAB),那么这次动作就会取消。


Button b1  =   new  Button(shell, SWT.PUSH);
Button b2 
=   new  Button(shell, SWT.PUSH);
Button b3 
=   new  Button(shell, SWT.PUSH);
Button b4 
=   new  Button(shell, SWT.PUSH);
Button b5 
=   new  Button(shell, SWT.PUSH);
Button b6 
=   new  Button(shell, SWT.PUSH);
b1.setBounds(
10 , 10 , 50 , 50 );
b2.setBounds(
100 , 10 , 50 , 50 );
b3.setBounds(
200 , 10 , 50 , 50 );
b4.setBounds(
10 , 100 , 50 , 50 );
b5.setBounds(
100 , 100 , 50 , 50 );
b6.setBounds(
200 , 100 , 50 , 50 );
b1.setText(
" 1 " );
b2.setText(
" 2 " );
b3.setText(
" 3 " );
b4.setText(
" 4 " );
b5.setText(
" 5 " );
b6.setText(
" 6 " );
FocusListener focusListener 
=   new  FocusListener()  {
        
public void focusGained(FocusEvent e) {
                System.out.println(e.widget 
+ " has focus");
        }

        
public void focusLost(FocusEvent e) {
                System.out.println(
"And now has lost it.");
        }

}
;
TraverseListener traverseListener 
=   new  TraverseListener()  {
        
public void keyTraversed(TraverseEvent e) {
                
if (e.detail == SWT.TRAVERSE_TAB_divVIOUS) {
                        System.out.println(
"You can't go back!");
                        e.doit 
= false;
                }

                System.out.println(e.widget 
+ " was traversed");
        }

}
;
b1.addFocusListener(focusListener);
b4.addTraverseListener(traverseListener);
b4.addFocusListener(focusListener);
b6.addTraverseListener(traverseListener);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值