2013-05-16 118 views
1

是否可以为Spinner上/下按钮添加点击监听器? 我需要这种行为,因为当我添加Modify或Selection侦听器时,我手动输入到Spinner字段的所有更改也都被提交,这对我来说是不可接受的。微调器,加/减箭头按钮监听器

回答

3

您可以收听SWT.Verify并检查EventkeyCode

按钮按下此值将为0。因此,当keyCode不等于0时,您可以告知Spinner忽略事件。

public static void main(String[] args) 
{ 
    final Display display = new Display(); 
    final Shell shell = new Shell(display); 
    shell.setLayout(new FillLayout()); 

    final Spinner spinner = new Spinner(shell, SWT.NONE); 
    spinner.setMaximum(100); 
    spinner.setMinimum(0); 
    spinner.setIncrement(10); 

    spinner.addListener(SWT.Verify, new Listener() 
    { 
     @Override 
     public void handleEvent(Event arg0) 
     { 
      if(arg0.keyCode != 0) 
      { 
       System.out.println("Value edited"); 
       arg0.doit = false; 
      } 
      else 
      { 
       System.out.println("Button pressed"); 
      } 
     } 
    }); 

    shell.pack(); 
    shell.open(); 

    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
     { 
      display.sleep(); 
     } 
    } 
    display.dispose(); 
} 
+0

谢谢您的回答。是否可以在VerifyListener和ModifyListener之间共享事件数据? – Steve

+0

@Steve你是什么意思? – Baz

+0

我的意思是:通过向上/向下微调按钮改变数值的可能性,以及在输入或焦点丢失的情况下在文本字段中手动改变数值的能力。 – Steve